8230284: Accounting currency format support does not cope with explicit number system
authornaoto
Mon, 09 Sep 2019 12:42:01 -0700
changeset 58058 b553ad95acf0
parent 58057 f894baf8d871
child 58059 baa4dd528de0
8230284: Accounting currency format support does not cope with explicit number system Reviewed-by: rriggs
make/jdk/src/classes/build/tools/cldrconverter/Bundle.java
make/jdk/src/classes/build/tools/cldrconverter/CLDRConverter.java
make/jdk/src/classes/build/tools/cldrconverter/LDMLParseHandler.java
src/java.base/share/classes/sun/util/locale/provider/LocaleResources.java
test/jdk/java/text/Format/NumberFormat/DFSMinusPerCentMill.java
test/jdk/java/util/Locale/bcp47u/CurrencyFormatTests.java
test/jdk/sun/text/resources/LocaleData.cldr
test/jdk/sun/text/resources/LocaleDataTest.java
--- a/make/jdk/src/classes/build/tools/cldrconverter/Bundle.java	Mon Sep 09 12:00:36 2019 -0700
+++ b/make/jdk/src/classes/build/tools/cldrconverter/Bundle.java	Mon Sep 09 12:42:01 2019 -0700
@@ -33,6 +33,7 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
+import java.util.Optional;
 
 class Bundle {
     static enum Type {
@@ -213,27 +214,16 @@
 
         // merge individual strings into arrays
 
-        // if myMap has any of the NumberPatterns members
-        for (String k : NUMBER_PATTERN_KEYS) {
-            if (myMap.containsKey(k)) {
-                String[] numberPatterns = new String[NUMBER_PATTERN_KEYS.length];
-                for (int i = 0; i < NUMBER_PATTERN_KEYS.length; i++) {
-                    String key = NUMBER_PATTERN_KEYS[i];
-                    String value = (String) myMap.remove(key);
-                    if (value == null) {
-                        value = (String) parentsMap.remove(key);
-                    }
-                    if (value == null || value.isEmpty()) {
-                        if (!key.endsWith("accounting")) {
-                            // print warning unless it is for "accounting",
-                            // which may be missing.
-                            CLDRConverter.warning("empty pattern for " + key);
-                        }
-                    }
-                    numberPatterns[i] = value;
-                }
-                myMap.put("NumberPatterns", numberPatterns);
-                break;
+        // if myMap has any of the NumberPatterns/NumberElements members, create a
+        // complete array of patterns/elements.
+        @SuppressWarnings("unchecked")
+        List<String> scripts = (List<String>) myMap.get("numberingScripts");
+        if (scripts != null) {
+            for (String script : scripts) {
+                myMap.put(script + ".NumberPatterns",
+                        createNumberArray(myMap, parentsMap, NUMBER_PATTERN_KEYS, script));
+                myMap.put(script + ".NumberElements",
+                        createNumberArray(myMap, parentsMap, NUMBER_ELEMENT_KEYS, script));
             }
         }
 
@@ -247,40 +237,6 @@
             }
         }
 
-        // if myMap has any of NUMBER_ELEMENT_KEYS, create a complete NumberElements.
-        String defaultScript = (String) myMap.get("DefaultNumberingSystem");
-        @SuppressWarnings("unchecked")
-        List<String> scripts = (List<String>) myMap.get("numberingScripts");
-        if (scripts != null) {
-            for (String script : scripts) {
-                for (String k : NUMBER_ELEMENT_KEYS) {
-                    String[] numberElements = new String[NUMBER_ELEMENT_KEYS.length];
-                    for (int i = 0; i < NUMBER_ELEMENT_KEYS.length; i++) {
-                        String key = script + "." + NUMBER_ELEMENT_KEYS[i];
-                        String value = (String) myMap.remove(key);
-                        if (value == null) {
-                            if (key.endsWith("/pattern")) {
-                                value = "#";
-                            } else {
-                                value = (String) parentsMap.get(key);
-                                if (value == null) {
-                                    // the last resort is "latn"
-                                    key = "latn." + NUMBER_ELEMENT_KEYS[i];
-                                    value = (String) parentsMap.get(key);
-                                    if (value == null) {
-                                        throw new InternalError("NumberElements: null for " + key);
-                                    }
-                                }
-                            }
-                        }
-                        numberElements[i] = value;
-                    }
-                    myMap.put(script + "." + "NumberElements", numberElements);
-                    break;
-                }
-            }
-        }
-
         // another hack: parentsMap is not used for date-time resources.
         if ("root".equals(id)) {
             parentsMap = null;
@@ -798,4 +754,45 @@
     private interface ConvertDateTimeLetters {
         void convert(CalendarType calendarType, char cldrLetter, int count, StringBuilder sb);
     }
+
+    /**
+     * Returns a complete string array for NumberElements or NumberPatterns. If any
+     * array element is missing, it will fall back to parents map, as well as
+     * numbering script fallback.
+     */
+    private String[] createNumberArray(Map<String, Object> myMap, Map<String, Object>parentsMap,
+                                        String[] keys, String script) {
+        String[] numArray = new String[keys.length];
+        for (int i = 0; i < keys.length; i++) {
+            String key = script + "." + keys[i];
+            final int idx = i;
+            Optional.ofNullable(
+                myMap.getOrDefault(key,
+                    // if value not found in myMap, search for parentsMap
+                    parentsMap.getOrDefault(key,
+                        parentsMap.getOrDefault(keys[i],
+                            // the last resort is "latn"
+                            parentsMap.get("latn." + keys[i])))))
+                .ifPresentOrElse(v -> numArray[idx] = (String)v, () -> {
+                    if (keys == NUMBER_PATTERN_KEYS) {
+                        // NumberPatterns
+                        if (!key.endsWith("accounting")) {
+                            // throw error unless it is for "accounting",
+                            // which may be missing.
+                            throw new InternalError("NumberPatterns: null for " +
+                                                    key + ", id: " + id);
+                        }
+                    } else {
+                        // NumberElements
+                        assert keys == NUMBER_ELEMENT_KEYS;
+                        if (key.endsWith("/pattern")) {
+                            numArray[idx] = "#";
+                        } else {
+                            throw new InternalError("NumberElements: null for " +
+                                                    key + ", id: " + id);
+                        }
+                    }});
+        }
+        return numArray;
+    }
 }
--- a/make/jdk/src/classes/build/tools/cldrconverter/CLDRConverter.java	Mon Sep 09 12:00:36 2019 -0700
+++ b/make/jdk/src/classes/build/tools/cldrconverter/CLDRConverter.java	Mon Sep 09 12:42:01 2019 -0700
@@ -864,7 +864,7 @@
         }
 
         for (String key : map.keySet()) {
-        // Copy available calendar names
+            // Copy available calendar names
             if (key.startsWith(CLDRConverter.LOCALE_TYPE_PREFIX_CA)) {
                 String type = key.substring(CLDRConverter.LOCALE_TYPE_PREFIX_CA.length());
                 for (CalendarType calendarType : CalendarType.values()) {
@@ -891,12 +891,13 @@
         List<String> numberingScripts = (List<String>) map.remove("numberingScripts");
         if (numberingScripts != null) {
             for (String script : numberingScripts) {
-                copyIfPresent(map, script + "." + "NumberElements", formatData);
+                copyIfPresent(map, script + ".NumberElements", formatData);
+                copyIfPresent(map, script + ".NumberPatterns", formatData);
             }
         } else {
             copyIfPresent(map, "NumberElements", formatData);
+            copyIfPresent(map, "NumberPatterns", formatData);
         }
-        copyIfPresent(map, "NumberPatterns", formatData);
         copyIfPresent(map, "short.CompactNumberPatterns", formatData);
         copyIfPresent(map, "long.CompactNumberPatterns", formatData);
 
@@ -1159,4 +1160,22 @@
                 .collect(Collectors.toList()),
             StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING);
     }
+
+    // for debug
+    private static void dumpMap(Map<String, Object> map) {
+        map.entrySet().stream()
+            .sorted(Map.Entry.comparingByKey())
+            .map(e -> {
+                Object val = e.getValue();
+                String valStr = null;
+
+                if (val instanceof String[]) {
+                    valStr = Arrays.asList((String[])val).toString();
+                } else if (val != null) {
+                    valStr = val.toString();
+                }
+                return e.getKey() + " = " + valStr;
+            })
+            .forEach(System.out::println);
+    }
 }
--- a/make/jdk/src/classes/build/tools/cldrconverter/LDMLParseHandler.java	Mon Sep 09 12:00:36 2019 -0700
+++ b/make/jdk/src/classes/build/tools/cldrconverter/LDMLParseHandler.java	Mon Sep 09 12:42:01 2019 -0700
@@ -508,7 +508,8 @@
             String type = attributes.getValue("type");
             if (null == type) {
                 // format data for decimal number format
-                pushStringEntry(qName, attributes, "NumberPatterns/decimal");
+                pushStringEntry(qName, attributes,
+                    currentNumberingSystem + "NumberPatterns/decimal");
                 currentStyle = type;
             } else {
                 switch (type) {
@@ -586,6 +587,18 @@
                 pushContainer(qName, attributes);
             }
             break;
+        case "currencyFormats":
+        case "decimalFormats":
+        case "percentFormats":
+            {
+                String script = attributes.getValue("numberSystem");
+                if (script != null) {
+                    addNumberingScript(script);
+                    currentNumberingSystem = script + ".";
+                }
+                pushContainer(qName, attributes);
+            }
+            break;
         case "currencyFormatLength":
             if (attributes.getValue("type") == null) {
                 // skipping type="short" data
@@ -601,9 +614,11 @@
                 // copy string for later assembly into NumberPatterns
                 String cfStyle = attributes.getValue("type");
                 if (cfStyle.equals("standard")) {
-                    pushStringEntry(qName, attributes, "NumberPatterns/currency");
+                    pushStringEntry(qName, attributes,
+                        currentNumberingSystem + "NumberPatterns/currency");
                 } else if (cfStyle.equals("accounting")) {
-                    pushStringEntry(qName, attributes, "NumberPatterns/accounting");
+                    pushStringEntry(qName, attributes,
+                        currentNumberingSystem + "NumberPatterns/accounting");
                 } else {
                     pushIgnoredContainer(qName);
                 }
@@ -613,7 +628,8 @@
             // for FormatData
             // copy string for later assembly into NumberPatterns
             if (attributes.getValue("type").equals("standard")) {
-                pushStringEntry(qName, attributes, "NumberPatterns/percent");
+                pushStringEntry(qName, attributes,
+                    currentNumberingSystem + "NumberPatterns/percent");
             } else {
                 pushIgnoredContainer(qName);
             }
@@ -641,13 +657,7 @@
                     break;
                 }
 
-                @SuppressWarnings("unchecked")
-                List<String> numberingScripts = (List<String>) get("numberingScripts");
-                if (numberingScripts == null) {
-                    numberingScripts = new ArrayList<>();
-                    put("numberingScripts", numberingScripts);
-                }
-                numberingScripts.add(script);
+                addNumberingScript(script);
                 put(currentNumberingSystem + "NumberElements/zero", digits.substring(0, 1));
                 pushContainer(qName, attributes);
             }
@@ -1020,6 +1030,13 @@
             compactCount = "";
             putIfEntry();
             break;
+        case "currencyFormats":
+        case "decimalFormats":
+        case "percentFormats":
+        case "symbols":
+            currentNumberingSystem = "";
+            putIfEntry();
+            break;
         default:
             putIfEntry();
         }
@@ -1086,4 +1103,16 @@
                 return key;
         }
     }
+
+    private void addNumberingScript(String script) {
+        @SuppressWarnings("unchecked")
+        List<String> numberingScripts = (List<String>) get("numberingScripts");
+        if (numberingScripts == null) {
+            numberingScripts = new ArrayList<>();
+            put("numberingScripts", numberingScripts);
+        }
+        if (!numberingScripts.contains(script)) {
+            numberingScripts.add(script);
+        }
+    }
 }
--- a/src/java.base/share/classes/sun/util/locale/provider/LocaleResources.java	Mon Sep 09 12:00:36 2019 -0700
+++ b/src/java.base/share/classes/sun/util/locale/provider/LocaleResources.java	Mon Sep 09 12:42:01 2019 -0700
@@ -178,30 +178,7 @@
             // elements are provided by the caller, yet they are cached here.
             ResourceBundle rb = localeData.getNumberFormatData(locale);
             dfsdata = new Object[3];
-
-            // NumberElements look up. First, try the Unicode extension
-            String numElemKey;
-            String numberType = locale.getUnicodeLocaleType("nu");
-            if (numberType != null) {
-                numElemKey = numberType + ".NumberElements";
-                if (rb.containsKey(numElemKey)) {
-                    dfsdata[0] = rb.getStringArray(numElemKey);
-                }
-            }
-
-            // Next, try DefaultNumberingSystem value
-            if (dfsdata[0] == null && rb.containsKey("DefaultNumberingSystem")) {
-                numElemKey = rb.getString("DefaultNumberingSystem") + ".NumberElements";
-                if (rb.containsKey(numElemKey)) {
-                    dfsdata[0] = rb.getStringArray(numElemKey);
-                }
-            }
-
-            // Last resort. No need to check the availability.
-            // Just let it throw MissingResourceException when needed.
-            if (dfsdata[0] == null) {
-                dfsdata[0] = rb.getStringArray("NumberElements");
-            }
+            dfsdata[0] = getNumberStrings(rb, "NumberElements");
 
             cache.put(DECIMAL_FORMAT_SYMBOLS_DATA_CACHEKEY,
                       new ResourceReference(DECIMAL_FORMAT_SYMBOLS_DATA_CACHEKEY, (Object) dfsdata, referenceQueue));
@@ -210,6 +187,37 @@
         return dfsdata;
     }
 
+    private String[] getNumberStrings(ResourceBundle rb, String type) {
+        String[] ret = null;
+        String key;
+        String numSys;
+
+        // Number strings look up. First, try the Unicode extension
+        numSys = locale.getUnicodeLocaleType("nu");
+        if (numSys != null) {
+            key = numSys + "." + type;
+            if (rb.containsKey(key)) {
+                ret = rb.getStringArray(key);
+            }
+        }
+
+        // Next, try DefaultNumberingSystem value
+        if (ret == null && rb.containsKey("DefaultNumberingSystem")) {
+            key = rb.getString("DefaultNumberingSystem") + "." + type;
+            if (rb.containsKey(key)) {
+                ret = rb.getStringArray(key);
+            }
+        }
+
+        // Last resort. No need to check the availability.
+        // Just let it throw MissingResourceException when needed.
+        if (ret == null) {
+            ret = rb.getStringArray(type);
+        }
+
+        return ret;
+    }
+
     public String getCurrencyName(String key) {
         Object currencyName = null;
         String cacheKey = CURRENCY_NAMES + key;
@@ -485,7 +493,7 @@
 
         if (data == null || ((numberPatterns = (String[]) data.get()) == null)) {
             ResourceBundle resource = localeData.getNumberFormatData(locale);
-            numberPatterns = resource.getStringArray("NumberPatterns");
+            numberPatterns = getNumberStrings(resource, "NumberPatterns");
             cache.put(NUMBER_PATTERNS_CACHEKEY,
                       new ResourceReference(NUMBER_PATTERNS_CACHEKEY, (Object) numberPatterns, referenceQueue));
         }
--- a/test/jdk/java/text/Format/NumberFormat/DFSMinusPerCentMill.java	Mon Sep 09 12:00:36 2019 -0700
+++ b/test/jdk/java/text/Format/NumberFormat/DFSMinusPerCentMill.java	Mon Sep 09 12:42:01 2019 -0700
@@ -23,7 +23,7 @@
 
 /**
  * @test
- * @bug 8220309
+ * @bug 8220309 8230284
  * @library /java/text/testlib
  * @summary Test String representation of MinusSign/Percent/PerMill symbols.
  *          This test assumes CLDR has numbering systems for "arab" and
@@ -55,14 +55,14 @@
             // Locale, FormatStyle, expected format, expected single char symbol
             {US_ARAB, Type.NUMBER, "\u061c-\u0661\u066c\u0662\u0663\u0664\u066b\u0665\u0666"},
             {US_ARAB, Type.PERCENT, "\u061c-\u0661\u0662\u0663\u066c\u0664\u0665\u0666\u066a\u061c"},
-            {US_ARAB, Type.CURRENCY, "\u061c-$\u0661\u066c\u0662\u0663\u0664\u066b\u0665\u0666"},
+            {US_ARAB, Type.CURRENCY, "\u061c-\u0661\u066c\u0662\u0663\u0664\u066b\u0665\u0666\u00a0$"},
             {US_ARAB, Type.INTEGER, "\u061c-\u0661\u066c\u0662\u0663\u0665"},
             {US_ARAB, Type.COMPACT, "\u061c-\u0661K"},
             {US_ARAB, Type.PERMILL, "\u061c-\u0661\u0662\u0663\u0664\u0665\u0666\u0660\u0609"},
 
             {US_ARABEXT, Type.NUMBER, "\u200e-\u200e\u06f1\u066c\u06f2\u06f3\u06f4\u066b\u06f5\u06f6"},
             {US_ARABEXT, Type.PERCENT, "\u200e-\u200e\u06f1\u06f2\u06f3\u066c\u06f4\u06f5\u06f6\u066a"},
-            {US_ARABEXT, Type.CURRENCY, "\u200e-\u200e$\u06f1\u066c\u06f2\u06f3\u06f4\u066b\u06f5\u06f6"},
+            {US_ARABEXT, Type.CURRENCY, "\u200e-\u200e$\u00a0\u06f1\u066c\u06f2\u06f3\u06f4\u066b\u06f5\u06f6"},
             {US_ARABEXT, Type.INTEGER, "\u200e-\u200e\u06f1\u066c\u06f2\u06f3\u06f5"},
             {US_ARABEXT, Type.COMPACT, "\u200e-\u200e\u06f1K"},
             {US_ARABEXT, Type.PERMILL, "\u200e-\u200e\u06f1\u06f2\u06f3\u06f4\u06f5\u06f6\u06f0\u0609"},
--- a/test/jdk/java/util/Locale/bcp47u/CurrencyFormatTests.java	Mon Sep 09 12:00:36 2019 -0700
+++ b/test/jdk/java/util/Locale/bcp47u/CurrencyFormatTests.java	Mon Sep 09 12:42:01 2019 -0700
@@ -24,10 +24,10 @@
 /*
  *
  * @test
- * @bug 8215181
+ * @bug 8215181 8230284
  * @summary Tests the "u-cf" extension
  * @modules jdk.localedata
- * @run testng/othervm CurrencyFormatTests
+ * @run testng/othervm -Djava.locale.providers=CLDR CurrencyFormatTests
  */
 
 import static org.testng.Assert.assertEquals;
@@ -78,6 +78,22 @@
             {Locale.forLanguageTag("en-US-u-rg-CHZZZZ-cf-standard"), -100, "CHF-100.00"},
             {Locale.forLanguageTag("en-US-u-rg-CHZZZZ-cf-account"), -100, "CHF-100.00"},
             {Locale.forLanguageTag("en-US-u-rg-CHZZZZ-cf-bogus"), -100, "CHF-100.00"},
+
+            // Numbering systems
+            // explicit
+            {Locale.forLanguageTag("zh-CN-u-nu-arab"), -100, "\u061c-\uffe5\u0661\u0660\u0660\u066b\u0660\u0660"},
+            {Locale.forLanguageTag("zh-CN-u-nu-arab-cf-standard"), -100, "\u061c-\uffe5\u0661\u0660\u0660\u066b\u0660\u0660"},
+            {Locale.forLanguageTag("zh-CN-u-nu-arab-cf-account"), -100, "\u061c-\uffe5\u0661\u0660\u0660\u066b\u0660\u0660"},
+            {Locale.forLanguageTag("zh-CN-u-nu-arab-cf-bogus"), -100, "\u061c-\uffe5\u0661\u0660\u0660\u066b\u0660\u0660"},
+            // implicit
+            {Locale.forLanguageTag("zh-CN"), -100, "-\uffe5100.00"},
+            {Locale.forLanguageTag("zh-CN-u-cf-standard"), -100, "-\uffe5100.00"},
+            {Locale.forLanguageTag("zh-CN-u-cf-account"), -100, "(\uffe5100.00)"},
+            {Locale.forLanguageTag("zh-CN-u-cf-bogus"), -100, "-\uffe5100.00"},
+            {Locale.forLanguageTag("ar-SA"), -100, "\u061c-\u0661\u0660\u0660\u066b\u0660\u0660\u00a0\u0631.\u0633.\u200f"},
+            {Locale.forLanguageTag("ar-SA-u-cf-standard"), -100, "\u061c-\u0661\u0660\u0660\u066b\u0660\u0660\u00a0\u0631.\u0633.\u200f"},
+            {Locale.forLanguageTag("ar-SA-u-cf-account"), -100, "\u061c-\u0661\u0660\u0660\u066b\u0660\u0660\u00a0\u0631.\u0633.\u200f"},
+            {Locale.forLanguageTag("ar-SA-u-cf-bogus"), -100, "\u061c-\u0661\u0660\u0660\u066b\u0660\u0660\u00a0\u0631.\u0633.\u200f"},
         };
     }
 
--- a/test/jdk/sun/text/resources/LocaleData.cldr	Mon Sep 09 12:00:36 2019 -0700
+++ b/test/jdk/sun/text/resources/LocaleData.cldr	Mon Sep 09 12:42:01 2019 -0700
@@ -13,9 +13,9 @@
 
 # bug #4055602, 4290801, 8013836
 CurrencyNames/pt_BR/BRL=R$
-FormatData/pt_BR/NumberPatterns/0=#,##0.###
+FormatData/pt_BR/latn.NumberPatterns/0=#,##0.###
 # FormatData/pt_BR/NumberPatterns/1=R$ #,##0.##;-R$ #,##0.## # Changed; see bug 4122840
-FormatData/pt_BR/NumberPatterns/2=#,##0%
+FormatData/pt_BR/latn.NumberPatterns/2=#,##0%
 FormatData/pt_BR/TimePatterns/0=HH:mm:ss zzzz
 FormatData/pt_BR/TimePatterns/1=HH:mm:ss z
 FormatData/pt_BR/TimePatterns/2=HH:mm:ss
@@ -25,9 +25,9 @@
 FormatData/pt_BR/DatePatterns/2=d 'de' MMM 'de' y
 FormatData/pt_BR/DatePatterns/3=dd/MM/y
 FormatData/pt_BR/DateTimePatterns/0={1} {0}
-#FormatData/pt_BR/NumberElements/0=<MISSING!>
-#FormatData/pt_BR/NumberElements/1=<MISSING!>
-#FormatData/pt_BR/NumberElements/2=<MISSING!>
+FormatData/pt_BR/latn.NumberElements/0=,
+FormatData/pt_BR/latn.NumberElements/1=.
+FormatData/pt_BR/latn.NumberElements/2=;
 FormatData/pt_BR/DayAbbreviations/0=dom
 FormatData/pt_BR/DayAbbreviations/1=seg
 FormatData/pt_BR/DayAbbreviations/2=ter
@@ -56,13 +56,13 @@
 
 # bug #4068012, 4290801, 4942982
 CurrencyNames/ru_RU/RUB=\u20bd
-FormatData/ru_RU/NumberPatterns/0=#,##0.###
+FormatData/ru_RU/latn.NumberPatterns/0=#,##0.###
 # FormatData/ru_RU/NumberPatterns/1=#,##0.##'\u0440.';-#,##0.##'\u0440.' # Changed; see bug 4122840
-FormatData/ru_RU/NumberPatterns/2=#,##0\u00a0%
+FormatData/ru_RU/latn.NumberPatterns/2=#,##0\u00a0%
 
 # bug #4070174
-#FormatData/en_CA/NumberElements/1=<MISSING!>
-#FormatData/en_CA/NumberElements/2=<MISSING!>
+FormatData/en_CA/latn.NumberElements/1=,
+FormatData/en_CA/latn.NumberElements/2=;
 
 # bug #4070452
 FormatData/de_DE/DatePatterns/3=dd.MM.yy
@@ -121,9 +121,9 @@
 
 # bug #4084356, 4290801
 CurrencyNames/pl_PL/PLN=z\u0142
-FormatData/pl_PL/NumberPatterns/0=#,##0.###
+FormatData/pl_PL/latn.NumberPatterns/0=#,##0.###
 # FormatData/pl_PL/NumberPatterns/1=#,##0.## z\u0142;-#,##0.## z\u0142 # Changed; see bug 4122840
-FormatData/pl_PL/NumberPatterns/2=#,##0%
+FormatData/pl_PL/latn.NumberPatterns/2=#,##0%
 FormatData/pl_PL/DayNames/0=niedziela
 FormatData/pl_PL/DayNames/1=poniedzia\u0142ek
 FormatData/pl_PL/DayNames/2=wtorek
@@ -155,17 +155,17 @@
 # changed for bug 4984277
 FormatData/pl_PL/DatePatterns/3=dd.MM.y
 FormatData/pl_PL/DateTimePatterns/0={1} {0}
-#FormatData/pl_PL/NumberElements/0=<MISSING!>
-#FormatData/pl_PL/NumberElements/1=<MISSING!>
-#FormatData/pl_PL/NumberElements/2=<MISSING!>
-#FormatData/pl_PL/NumberElements/3=<MISSING!>
-#FormatData/pl_PL/NumberElements/4=<MISSING!>
-#FormatData/pl_PL/NumberElements/5=<MISSING!>
-#FormatData/pl_PL/NumberElements/6=<MISSING!>
-#FormatData/pl_PL/NumberElements/7=<MISSING!>
-#FormatData/pl_PL/NumberElements/8=<MISSING!>
-#FormatData/pl_PL/NumberElements/9=<MISSING!>
-#FormatData/pl_PL/NumberElements/10=<MISSING!>
+FormatData/pl_PL/latn.NumberElements/0=,
+FormatData/pl_PL/latn.NumberElements/1=\u00a0
+FormatData/pl_PL/latn.NumberElements/2=;
+FormatData/pl_PL/latn.NumberElements/3=%
+FormatData/pl_PL/latn.NumberElements/4=0
+FormatData/pl_PL/latn.NumberElements/5=#
+FormatData/pl_PL/latn.NumberElements/6=-
+FormatData/pl_PL/latn.NumberElements/7=E
+FormatData/pl_PL/latn.NumberElements/8=\u2030
+FormatData/pl_PL/latn.NumberElements/9=\u221e
+FormatData/pl_PL/latn.NumberElements/10=NaN
 FormatData/pl_PL/Eras/0=p.n.e.
 FormatData/pl_PL/Eras/1=n.e.
 LocaleNames/pl_PL/PL=Polska
@@ -212,9 +212,9 @@
 
 # bug #4094033, 4290801, 4942982
 CurrencyNames/ru_RU/RUB=\u20bd
-FormatData/ru_RU/NumberPatterns/0=#,##0.###
+FormatData/ru_RU/latn.NumberPatterns/0=#,##0.###
 # FormatData/ru_RU/NumberPatterns/1=#,##0.##'\u0440.';-#,##0.##'\u0440.' # Changed; see bug 4122840
-FormatData/ru_RU/NumberPatterns/2=#,##0\u00a0%
+FormatData/ru_RU/latn.NumberPatterns/2=#,##0\u00a0%
 FormatData/ru_RU/MonthNames/0=\u044f\u043d\u0432\u0430\u0440\u044f
 FormatData/ru_RU/MonthNames/1=\u0444\u0435\u0432\u0440\u0430\u043b\u044f
 FormatData/ru_RU/MonthNames/2=\u043c\u0430\u0440\u0442\u0430
@@ -299,17 +299,17 @@
 FormatData/ru_RU/DayNames/4=\u0447\u0435\u0442\u0432\u0435\u0440\u0433
 FormatData/ru_RU/DayNames/5=\u043f\u044f\u0442\u043d\u0438\u0446\u0430
 FormatData/ru_RU/DayNames/6=\u0441\u0443\u0431\u0431\u043e\u0442\u0430
-#FormatData/ru_RU/NumberElements/0=<MISSING!>
-#FormatData/ru_RU/NumberElements/1=<MISSING!>
-#FormatData/ru_RU/NumberElements/2=<MISSING!>
-#FormatData/ru_RU/NumberElements/3=<MISSING!>
-#FormatData/ru_RU/NumberElements/4=<MISSING!>
-#FormatData/ru_RU/NumberElements/5=<MISSING!>
-#FormatData/ru_RU/NumberElements/6=<MISSING!>
-#FormatData/ru_RU/NumberElements/7=<MISSING!>
-#FormatData/ru_RU/NumberElements/8=<MISSING!>
-#FormatData/ru_RU/NumberElements/9=<MISSING!>
-#FormatData/ru_RU/NumberElements/10=<MISSING!>
+FormatData/ru_RU/latn.NumberElements/0=,
+FormatData/ru_RU/latn.NumberElements/1=\u00a0
+FormatData/ru_RU/latn.NumberElements/2=;
+FormatData/ru_RU/latn.NumberElements/3=%
+FormatData/ru_RU/latn.NumberElements/4=0
+FormatData/ru_RU/latn.NumberElements/5=#
+FormatData/ru_RU/latn.NumberElements/6=-
+FormatData/ru_RU/latn.NumberElements/7=E
+FormatData/ru_RU/latn.NumberElements/8=\u2030
+FormatData/ru_RU/latn.NumberElements/9=\u221e
+FormatData/ru_RU/latn.NumberElements/10=\u043d\u0435\u00a0\u0447\u0438\u0441\u043b\u043e
 LocaleNames/ru_RU/RU=\u0420\u043e\u0441\u0441\u0438\u044f
 FormatData/ru_RU/DayAbbreviations/0=\u0432\u0441
 FormatData/ru_RU/DayAbbreviations/1=\u043f\u043d
@@ -339,9 +339,9 @@
 LocaleNames/en_AU/IE=Ireland
 LocaleNames/en_AU/AU=Australia
 LocaleNames/en_AU/NZ=New Zealand
-FormatData/en_AU/NumberPatterns/0=#,##0.###
+FormatData/en_AU/latn.NumberPatterns/0=#,##0.###
 # FormatData/en_AU/NumberPatterns/1=$#,##0.00;-$#,##0.00 # Changed; see bug 4122840
-FormatData/en_AU/NumberPatterns/2=#,##0%
+FormatData/en_AU/latn.NumberPatterns/2=#,##0%
 CurrencyNames/en_AU/AUD=$
 LocaleNames/en_AU/en=English
 FormatData/en_AU/MonthNames/0=January
@@ -363,9 +363,9 @@
 LocaleNames/en_NZ/IE=Ireland
 LocaleNames/en_NZ/AU=Australia
 LocaleNames/en_NZ/NZ=New Zealand
-FormatData/en_NZ/NumberPatterns/0=#,##0.###
+FormatData/en_NZ/latn.NumberPatterns/0=#,##0.###
 # FormatData/en_NZ/NumberPatterns/1=$#,##0.00;-$#,##0.00 # Changed; see bug 4122840
-FormatData/en_NZ/NumberPatterns/2=#,##0%
+FormatData/en_NZ/latn.NumberPatterns/2=#,##0%
 CurrencyNames/en_NZ/NZD=$
 LocaleNames/en_NZ/en=English
 FormatData/en_NZ/MonthNames/0=January
@@ -386,18 +386,18 @@
 LocaleNames/en_ZA/CA=Canada
 LocaleNames/en_ZA/IE=Ireland
 LocaleNames/en_ZA/ZA=South Africa
-FormatData/en_ZA/NumberPatterns/0=#,##0.###
+FormatData/en_ZA/latn.NumberPatterns/0=#,##0.###
 # FormatData/en_ZA/NumberPatterns/1=R #,##0.00;R-#,##0.00 # Changed; see bug 4122840
-FormatData/en_ZA/NumberPatterns/2=#,##0%
+FormatData/en_ZA/latn.NumberPatterns/2=#,##0%
 CurrencyNames/en_ZA/ZAR=R
 LocaleNames/en_ZA/en=English
 FormatData/en_ZA/MonthNames/0=January
 FormatData/en_ZA/MonthNames/1=February
 FormatData/en_ZA/MonthNames/2=March
 CurrencyNames/es_AR/ARS=$
-FormatData/es_AR/NumberPatterns/0=#,##0.###
+FormatData/es_AR/latn.NumberPatterns/0=#,##0.###
 # FormatData/es_AR/NumberPatterns/1=$#,##0.00;($#,##0.00) # Changed; see bug 4122840
-FormatData/es_AR/NumberPatterns/2=#,##0\u00a0%
+FormatData/es_AR/latn.NumberPatterns/2=#,##0\u00a0%
 FormatData/es_AR/TimePatterns/0=HH:mm:ss zzzz
 FormatData/es_AR/TimePatterns/1=HH:mm:ss z
 FormatData/es_AR/TimePatterns/2=HH:mm:ss
@@ -407,12 +407,12 @@
 FormatData/es_AR/DatePatterns/2=d MMM y
 FormatData/es_AR/DatePatterns/3=d/M/yy
 FormatData/es_AR/DateTimePatterns/0={1}, {0}
-#FormatData/es_AR/NumberElements/0=<MISSING!>
-#FormatData/es_AR/NumberElements/1=<MISSING!>
-#FormatData/es_AR/NumberElements/2=<MISSING!>
-FormatData/es_BO/NumberPatterns/0=#,##0.###
+FormatData/es_AR/latn.NumberElements/0=,
+FormatData/es_AR/latn.NumberElements/1=.
+FormatData/es_AR/latn.NumberElements/2=;
+FormatData/es_BO/latn.NumberPatterns/0=#,##0.###
 # FormatData/es_BO/NumberPatterns/1=B$#,##0.00;(B$#,##0.00) # Changed; see bug 4122840
-FormatData/es_BO/NumberPatterns/2=#,##0\u00a0%
+FormatData/es_BO/latn.NumberPatterns/2=#,##0\u00a0%
 CurrencyNames/es_BO/BOB=Bs
 FormatData/es_BO/TimePatterns/0=HH:mm:ss zzzz
 FormatData/es_BO/TimePatterns/1=HH:mm:ss z
@@ -424,24 +424,24 @@
 FormatData/es_BO/DatePatterns/3=d/M/yy
 FormatData/es_BO/DateTimePatterns/0={1}, {0}
 # changed decimal and group separator for 5102005 bugfix
-#FormatData/es_BO/NumberElements/0=<MISSING!>
-#FormatData/es_BO/NumberElements/1=<MISSING!>
-#FormatData/es_BO/NumberElements/2=<MISSING!>
+FormatData/es_BO/latn.NumberElements/0=,
+FormatData/es_BO/latn.NumberElements/1=.
+FormatData/es_BO/latn.NumberElements/2=;
 CurrencyNames/es_CL/CLP=$
-FormatData/es_CL/NumberPatterns/0=#,##0.###
+FormatData/es_CL/latn.NumberPatterns/0=#,##0.###
 # FormatData/es_CL/NumberPatterns/1=Ch$#,##0.00;Ch$-#,##0.00 # Changed; see bug 4122840
-FormatData/es_CL/NumberPatterns/2=#,##0\u00a0%
+FormatData/es_CL/latn.NumberPatterns/2=#,##0\u00a0%
 FormatData/es_CL/DatePatterns/0=EEEE, d 'de' MMMM 'de' y
 FormatData/es_CL/DatePatterns/1=d 'de' MMMM 'de' y
 FormatData/es_CL/DatePatterns/2=dd-MM-y
 FormatData/es_CL/DatePatterns/3=dd-MM-yy
 FormatData/es_CL/DateTimePatterns/0={1}, {0}
-#FormatData/es_CL/NumberElements/0=<MISSING!>
-#FormatData/es_CL/NumberElements/1=<MISSING!>
-#FormatData/es_CL/NumberElements/2=<MISSING!>
-FormatData/es_CO/NumberPatterns/0=#,##0.###
+FormatData/es_CL/latn.NumberElements/0=,
+FormatData/es_CL/latn.NumberElements/1=.
+FormatData/es_CL/latn.NumberElements/2=;
+FormatData/es_CO/latn.NumberPatterns/0=#,##0.###
 # FormatData/es_CO/NumberPatterns/1=C$#,##0.00;(C$#,##0.00) # Changed; see bug 4122840
-FormatData/es_CO/NumberPatterns/2=#,##0\u00a0%
+FormatData/es_CO/latn.NumberPatterns/2=#,##0\u00a0%
 # changed currency symbol during 5102005 bugfix
 CurrencyNames/es_CO/COP=$
 FormatData/es_CO/TimePatterns/0=h:mm:ss a zzzz
@@ -454,12 +454,12 @@
 FormatData/es_CO/DatePatterns/3=d/MM/yy
 FormatData/es_CO/DateTimePatterns/0={1}, {0}
 # changed decimal and group separator for 5102005 bugfix
-#FormatData/es_CO/NumberElements/0=<MISSING!>
-#FormatData/es_CO/NumberElements/1=<MISSING!>
-#FormatData/es_CO/NumberElements/2=<MISSING!>
-FormatData/es_CR/NumberPatterns/0=#,##0.###
+FormatData/es_CO/latn.NumberElements/0=,
+FormatData/es_CO/latn.NumberElements/1=.
+FormatData/es_CO/latn.NumberElements/2=;
+FormatData/es_CR/latn.NumberPatterns/0=#,##0.###
 # FormatData/es_CR/NumberPatterns/1=C#,##0.00;(C#,##0.00) # Changed; see bug 4122840
-FormatData/es_CR/NumberPatterns/2=#,##0\u00a0%
+FormatData/es_CR/latn.NumberPatterns/2=#,##0\u00a0%
 CurrencyNames/es_CR/CRC=\u20a1
 FormatData/es_CR/TimePatterns/0=HH:mm:ss zzzz
 FormatData/es_CR/TimePatterns/1=HH:mm:ss z
@@ -470,12 +470,12 @@
 FormatData/es_CR/DatePatterns/2=d MMM y
 FormatData/es_CR/DatePatterns/3=d/M/yy
 FormatData/es_CR/DateTimePatterns/0={1}, {0}
-#FormatData/es_CR/NumberElements/0=<MISSING!>
-#FormatData/es_CR/NumberElements/1=<MISSING!>
-#FormatData/es_CR/NumberElements/2=<MISSING!>
-FormatData/es_DO/NumberPatterns/0=#,##0.###
+FormatData/es_CR/latn.NumberElements/0=,
+FormatData/es_CR/latn.NumberElements/1=\u00a0
+FormatData/es_CR/latn.NumberElements/2=;
+FormatData/es_DO/latn.NumberPatterns/0=#,##0.###
 # FormatData/es_DO/NumberPatterns/1=RD$#,##0.00;(RD$#,##0.00) # Changed; see bug 4122840
-FormatData/es_DO/NumberPatterns/2=#,##0\u00a0%
+FormatData/es_DO/latn.NumberPatterns/2=#,##0\u00a0%
 CurrencyNames/es_DO/DOP=RD$
 FormatData/es_DO/TimePatterns/0=h:mm:ss a zzzz
 FormatData/es_DO/TimePatterns/1=h:mm:ss a z
@@ -486,12 +486,12 @@
 # FormatData/es_DO/DatePatterns/2=MM/dd/yyyy # Changed: see bug 8037343
 # FormatData/es_DO/DatePatterns/3=MM/dd/yy # Changed: see bug 8037343
 FormatData/es_DO/DateTimePatterns/0={1}, {0}
-#FormatData/es_DO/NumberElements/0=<MISSING!>
-#FormatData/es_DO/NumberElements/1=<MISSING!>
-#FormatData/es_DO/NumberElements/2=<MISSING!>
-FormatData/es_EC/NumberPatterns/0=#,##0.###
+FormatData/es_DO/latn.NumberElements/0=.
+FormatData/es_DO/latn.NumberElements/1=,
+FormatData/es_DO/latn.NumberElements/2=;
+FormatData/es_EC/latn.NumberPatterns/0=#,##0.###
 # FormatData/es_EC/NumberPatterns/1=S/#,##0.00;S/-#,##0.00 # Changed; see bug 4122840
-FormatData/es_EC/NumberPatterns/2=#,##0\u00a0%
+FormatData/es_EC/latn.NumberPatterns/2=#,##0\u00a0%
 #changed for 4945388
 CurrencyNames/es_EC/USD=$
 FormatData/es_EC/DatePatterns/0=EEEE, d 'de' MMMM 'de' y
@@ -500,9 +500,9 @@
 FormatData/es_EC/DatePatterns/3=d/M/yy
 FormatData/es_EC/DateTimePatterns/0={1}, {0}
 # changed decimal and group separator for 5102005 bugfix
-#FormatData/es_EC/NumberElements/0=<MISSING!>
-#FormatData/es_EC/NumberElements/1=<MISSING!>
-#FormatData/es_EC/NumberElements/2=<MISSING!>
+FormatData/es_EC/latn.NumberElements/0=,
+FormatData/es_EC/latn.NumberElements/1=.
+FormatData/es_EC/latn.NumberElements/2=;
 LocaleNames/es/ES=Espa\u00f1a
 LocaleNames/es/AR=Argentina
 LocaleNames/es/BO=Bolivia
@@ -522,9 +522,9 @@
 # LocaleNames/es/SV=El SalvadorUY # Changed, see bug 4331446
 LocaleNames/es/UY=Uruguay
 LocaleNames/es/VE=Venezuela
-FormatData/es_GT/NumberPatterns/0=#,##0.###
+FormatData/es_GT/latn.NumberPatterns/0=#,##0.###
 # FormatData/es_GT/NumberPatterns/1=Q#,##0.00;(Q#,##0.00) # Changed; see bug 4122840
-FormatData/es_GT/NumberPatterns/2=#,##0\u00a0%
+FormatData/es_GT/latn.NumberPatterns/2=#,##0\u00a0%
 CurrencyNames/es_GT/GTQ=Q
 FormatData/es_GT/TimePatterns/0=HH:mm:ss zzzz
 FormatData/es_GT/TimePatterns/1=HH:mm:ss z
@@ -535,12 +535,12 @@
 FormatData/es_GT/DatePatterns/2=d/MM/y
 FormatData/es_GT/DatePatterns/3=d/MM/yy
 FormatData/es_GT/DateTimePatterns/0={1}, {0}
-#FormatData/es_GT/NumberElements/0=<MISSING!>
-#FormatData/es_GT/NumberElements/1=<MISSING!>
-#FormatData/es_GT/NumberElements/2=<MISSING!>
-FormatData/es_HN/NumberPatterns/0=#,##0.###
+FormatData/es_GT/latn.NumberElements/0=.
+FormatData/es_GT/latn.NumberElements/1=,
+FormatData/es_GT/latn.NumberElements/2=;
+FormatData/es_HN/latn.NumberPatterns/0=#,##0.###
 # FormatData/es_HN/NumberPatterns/1=L#,##0.00;(L#,##0.00) # Changed; see bug 4122840
-FormatData/es_HN/NumberPatterns/2=#,##0\u00a0%
+FormatData/es_HN/latn.NumberPatterns/2=#,##0\u00a0%
 CurrencyNames/es_HN/HNL=L
 FormatData/es_HN/TimePatterns/0=HH:mm:ss zzzz
 FormatData/es_HN/TimePatterns/1=HH:mm:ss z
@@ -551,12 +551,12 @@
 FormatData/es_HN/DatePatterns/2=d MMM y
 FormatData/es_HN/DatePatterns/3=d/M/yy
 FormatData/es_HN/DateTimePatterns/0={1}, {0}
-#FormatData/es_HN/NumberElements/0=<MISSING!>
-#FormatData/es_HN/NumberElements/1=<MISSING!>
-#FormatData/es_HN/NumberElements/2=<MISSING!>
-FormatData/es_MX/NumberPatterns/0=#,##0.###
+FormatData/es_HN/latn.NumberElements/0=.
+FormatData/es_HN/latn.NumberElements/1=,
+FormatData/es_HN/latn.NumberElements/2=;
+FormatData/es_MX/latn.NumberPatterns/0=#,##0.###
 # FormatData/es_MX/NumberPatterns/1=$#,##0.00;($#,##0.00) # Changed; see bug 4122840
-FormatData/es_MX/NumberPatterns/2=#,##0\u00a0%
+FormatData/es_MX/latn.NumberPatterns/2=#,##0\u00a0%
 CurrencyNames/es_MX/MXN=$
 FormatData/es_MX/TimePatterns/0=H:mm:ss zzzz
 FormatData/es_MX/TimePatterns/1=H:mm:ss z
@@ -567,12 +567,12 @@
 FormatData/es_MX/DatePatterns/2=d MMM y
 FormatData/es_MX/DatePatterns/3=dd/MM/yy
 FormatData/es_MX/DateTimePatterns/0={1}, {0}
-#FormatData/es_MX/NumberElements/0=<MISSING!>
-#FormatData/es_MX/NumberElements/1=<MISSING!>
-#FormatData/es_MX/NumberElements/2=<MISSING!>
-FormatData/es_NI/NumberPatterns/0=#,##0.###
+FormatData/es_MX/latn.NumberElements/0=.
+FormatData/es_MX/latn.NumberElements/1=,
+FormatData/es_MX/latn.NumberElements/2=;
+FormatData/es_NI/latn.NumberPatterns/0=#,##0.###
 # FormatData/es_NI/NumberPatterns/1=$C#,##0.00;($C#,##0.00) # Changed; see bug 4122840
-FormatData/es_NI/NumberPatterns/2=#,##0\u00a0%
+FormatData/es_NI/latn.NumberPatterns/2=#,##0\u00a0%
 CurrencyNames/es_NI/NIO=C$
 FormatData/es_NI/TimePatterns/0=HH:mm:ss zzzz
 FormatData/es_NI/TimePatterns/1=HH:mm:ss z
@@ -583,12 +583,12 @@
 FormatData/es_NI/DatePatterns/2=d MMM y
 FormatData/es_NI/DatePatterns/3=d/M/yy
 FormatData/es_NI/DateTimePatterns/0={1}, {0}
-#FormatData/es_NI/NumberElements/0=<MISSING!>
-#FormatData/es_NI/NumberElements/1=<MISSING!>
-#FormatData/es_NI/NumberElements/2=<MISSING!>
-FormatData/es_PA/NumberPatterns/0=#,##0.###
+FormatData/es_NI/latn.NumberElements/0=.
+FormatData/es_NI/latn.NumberElements/1=,
+FormatData/es_NI/latn.NumberElements/2=;
+FormatData/es_PA/latn.NumberPatterns/0=#,##0.###
 # FormatData/es_PA/NumberPatterns/1=B#,##0.00;(B#,##0.00) # Changed; see bug 4122840
-FormatData/es_PA/NumberPatterns/2=#,##0\u00a0%
+FormatData/es_PA/latn.NumberPatterns/2=#,##0\u00a0%
 CurrencyNames/es_PA/PAB=B/.
 FormatData/es_PA/TimePatterns/0=h:mm:ss a zzzz
 FormatData/es_PA/TimePatterns/1=h:mm:ss a z
@@ -599,12 +599,12 @@
 FormatData/es_PA/DatePatterns/2=MM/dd/y
 FormatData/es_PA/DatePatterns/3=MM/dd/yy
 FormatData/es_PA/DateTimePatterns/0={1}, {0}
-#FormatData/es_PA/NumberElements/0=<MISSING!>
-#FormatData/es_PA/NumberElements/1=<MISSING!>
-#FormatData/es_PA/NumberElements/2=<MISSING!>
-FormatData/es_PE/NumberPatterns/0=#,##0.###
+FormatData/es_PA/latn.NumberElements/0=.
+FormatData/es_PA/latn.NumberElements/1=,
+FormatData/es_PA/latn.NumberElements/2=;
+FormatData/es_PE/latn.NumberPatterns/0=#,##0.###
 # FormatData/es_PE/NumberPatterns/1=S/#,##0.00;S/-#,##0.00 # Changed; see bug 4122840
-FormatData/es_PE/NumberPatterns/2=#,##0\u00a0%
+FormatData/es_PE/latn.NumberPatterns/2=#,##0\u00a0%
 FormatData/es_PE/TimePatterns/0=HH:mm:ss zzzz
 FormatData/es_PE/TimePatterns/1=HH:mm:ss z
 FormatData/es_PE/TimePatterns/2=HH:mm:ss
@@ -614,12 +614,12 @@
 FormatData/es_PE/DatePatterns/2=d MMM y
 FormatData/es_PE/DatePatterns/3=d/MM/yy
 FormatData/es_PE/DateTimePatterns/0={1}, {0}
-#FormatData/es_PE/NumberElements/0=<MISSING!>
-#FormatData/es_PE/NumberElements/1=<MISSING!>
-#FormatData/es_PE/NumberElements/2=<MISSING!>
-FormatData/es_PR/NumberPatterns/0=#,##0.###
+FormatData/es_PE/latn.NumberElements/0=.
+FormatData/es_PE/latn.NumberElements/1=,
+FormatData/es_PE/latn.NumberElements/2=;
+FormatData/es_PR/latn.NumberPatterns/0=#,##0.###
 # FormatData/es_PR/NumberPatterns/1=$#,##0.00;($#,##0.00) # Changed; see bug 4122840
-FormatData/es_PR/NumberPatterns/2=#,##0\u00a0%
+FormatData/es_PR/latn.NumberPatterns/2=#,##0\u00a0%
 CurrencyNames/es_PR/USD=$
 FormatData/es_PR/TimePatterns/0=h:mm:ss a zzzz
 FormatData/es_PR/TimePatterns/1=h:mm:ss a z
@@ -630,13 +630,13 @@
 FormatData/es_PR/DatePatterns/2=MM/dd/y
 FormatData/es_PR/DatePatterns/3=MM/dd/yy
 FormatData/es_PR/DateTimePatterns/0={1}, {0}
-#FormatData/es_PR/NumberElements/0=<MISSING!>
-#FormatData/es_PR/NumberElements/1=<MISSING!>
-#FormatData/es_PR/NumberElements/2=<MISSING!>
+FormatData/es_PR/latn.NumberElements/0=.
+FormatData/es_PR/latn.NumberElements/1=,
+FormatData/es_PR/latn.NumberElements/2=;
 CurrencyNames/es_PY/PYG=Gs.
-FormatData/es_PY/NumberPatterns/0=#,##0.###
+FormatData/es_PY/latn.NumberPatterns/0=#,##0.###
 # FormatData/es_PY/NumberPatterns/1=G#,##0.00;(G#,##0.00) # Changed; see bug 4122840
-FormatData/es_PY/NumberPatterns/2=#,##0\u00a0%
+FormatData/es_PY/latn.NumberPatterns/2=#,##0\u00a0%
 FormatData/es_PY/TimePatterns/0=HH:mm:ss zzzz
 FormatData/es_PY/TimePatterns/1=HH:mm:ss z
 FormatData/es_PY/TimePatterns/2=HH:mm:ss
@@ -646,12 +646,12 @@
 FormatData/es_PY/DatePatterns/2=d MMM y
 FormatData/es_PY/DatePatterns/3=d/M/yy
 FormatData/es_PY/DateTimePatterns/0={1}, {0}
-#FormatData/es_PY/NumberElements/0=<MISSING!>
-#FormatData/es_PY/NumberElements/1=<MISSING!>
-#FormatData/es_PY/NumberElements/2=<MISSING!>
-FormatData/es_SV/NumberPatterns/0=#,##0.###
+FormatData/es_PY/latn.NumberElements/0=,
+FormatData/es_PY/latn.NumberElements/1=.
+FormatData/es_PY/latn.NumberElements/2=;
+FormatData/es_SV/latn.NumberPatterns/0=#,##0.###
 # FormatData/es_SV/NumberPatterns/1=C#,##0.00;(C#,##0.00) # Changed; see bug 4122840
-FormatData/es_SV/NumberPatterns/2=#,##0\u00a0%
+FormatData/es_SV/latn.NumberPatterns/2=#,##0\u00a0%
 #CurrencyNames/es_SV/SVC=<MISSING!>
 FormatData/es_SV/TimePatterns/0=HH:mm:ss zzzz
 FormatData/es_SV/TimePatterns/1=HH:mm:ss z
@@ -662,13 +662,13 @@
 FormatData/es_SV/DatePatterns/2=d MMM y
 FormatData/es_SV/DatePatterns/3=d/M/yy
 FormatData/es_SV/DateTimePatterns/0={1}, {0}
-#FormatData/es_SV/NumberElements/0=<MISSING!>
-#FormatData/es_SV/NumberElements/1=<MISSING!>
-#FormatData/es_SV/NumberElements/2=<MISSING!>
+FormatData/es_SV/latn.NumberElements/0=.
+FormatData/es_SV/latn.NumberElements/1=,
+FormatData/es_SV/latn.NumberElements/2=;
 CurrencyNames/es_UY/UYU=$
-FormatData/es_UY/NumberPatterns/0=#,##0.###
+FormatData/es_UY/latn.NumberPatterns/0=#,##0.###
 # FormatData/es_UY/NumberPatterns/1=NU$ #,##0.00;(NU$#,##0.00) # Changed; see bug 4122840
-FormatData/es_UY/NumberPatterns/2=#,##0\u00a0%
+FormatData/es_UY/latn.NumberPatterns/2=#,##0\u00a0%
 FormatData/es_UY/TimePatterns/0=HH:mm:ss zzzz
 FormatData/es_UY/TimePatterns/1=HH:mm:ss z
 FormatData/es_UY/TimePatterns/2=HH:mm:ss
@@ -678,14 +678,14 @@
 FormatData/es_UY/DatePatterns/2=d MMM y
 FormatData/es_UY/DatePatterns/3=d/M/yy
 FormatData/es_UY/DateTimePatterns/0={1}, {0}
-#FormatData/es_UY/NumberElements/0=<MISSING!>
-#FormatData/es_UY/NumberElements/1=<MISSING!>
-#FormatData/es_UY/NumberElements/2=<MISSING!>
+FormatData/es_UY/latn.NumberElements/0=,
+FormatData/es_UY/latn.NumberElements/1=.
+FormatData/es_UY/latn.NumberElements/2=;
 #CurrencyNames/es_VE/VEB=<MISSING!>
 # bug 6570259
-FormatData/es_VE/NumberPatterns/0=#,##0.###
+FormatData/es_VE/latn.NumberPatterns/0=#,##0.###
 # FormatData/es_VE/NumberPatterns/1=Bs#,##0.00;Bs -#,##0.00 # Changed; see bug 4122840
-FormatData/es_VE/NumberPatterns/2=#,##0\u00a0%
+FormatData/es_VE/latn.NumberPatterns/2=#,##0\u00a0%
 FormatData/es_VE/TimePatterns/0=h:mm:ss a zzzz
 FormatData/es_VE/TimePatterns/1=h:mm:ss a z
 FormatData/es_VE/TimePatterns/2=h:mm:ss a
@@ -695,15 +695,15 @@
 FormatData/es_VE/DatePatterns/2=d MMM y
 FormatData/es_VE/DatePatterns/3=d/M/yy
 FormatData/es_VE/DateTimePatterns/0={1}, {0}
-#FormatData/es_VE/NumberElements/0=<MISSING!>
-#FormatData/es_VE/NumberElements/1=<MISSING!>
-#FormatData/es_VE/NumberElements/2=<MISSING!>
+FormatData/es_VE/latn.NumberElements/0=,
+FormatData/es_VE/latn.NumberElements/1=.
+FormatData/es_VE/latn.NumberElements/2=;
 
 # bug #4099810, 4290801, 6868106, 6916787
 CurrencyNames/uk_UA/UAH=\u20b4
-FormatData/uk_UA/NumberPatterns/0=#,##0.###
+FormatData/uk_UA/latn.NumberPatterns/0=#,##0.###
 # FormatData/uk_UA/NumberPatterns/1=#,##0.## '\u0433\u0440\u0432.';-#,##0.## '\u0433\u0440\u0432.' # Changed; see bug 4122840
-FormatData/uk_UA/NumberPatterns/2=#,##0%
+FormatData/uk_UA/latn.NumberPatterns/2=#,##0%
 
 # bug 6245766
 FormatData/uk/DatePatterns/0=EEEE, d MMMM y '\u0440'.
@@ -735,9 +735,9 @@
 
 # bug #4113638, 4290801
 CurrencyNames/ar_AE/AED=\u062f.\u0625.\u200f
-FormatData/ar_AE/NumberPatterns/0=#,##0.###
+FormatData/ar_AE/arab.NumberPatterns/0=#,##0.###
 # FormatData/ar_AE/NumberPatterns/1='\u062f.\u0625.\u200f' #,##0.###;'\u062f.\u0625.\u200f' #,##0.###- # Changed; see bug 4122840
-FormatData/ar_AE/NumberPatterns/2=#,##0%
+FormatData/ar_AE/arab.NumberPatterns/2=#,##0%
 FormatData/ar_AE/DayNames/0=\u0627\u0644\u0623\u062d\u062f
 FormatData/ar_AE/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646
 FormatData/ar_AE/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621
@@ -811,21 +811,21 @@
 LocaleNames/ar_AE/TN=\u062a\u0648\u0646\u0633
 LocaleNames/ar_AE/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629
 LocaleNames/ar_AE/YE=\u0627\u0644\u064a\u0645\u0646
-#FormatData/ar_AE/NumberElements/0=<MISSING!>
-#FormatData/ar_AE/NumberElements/1=<MISSING!>
-#FormatData/ar_AE/NumberElements/2=<MISSING!>
-#FormatData/ar_AE/NumberElements/3=<MISSING!>
-#FormatData/ar_AE/NumberElements/4=<MISSING!>
-#FormatData/ar_AE/NumberElements/5=<MISSING!>
-#FormatData/ar_AE/NumberElements/6=<MISSING!>
-#FormatData/ar_AE/NumberElements/7=<MISSING!>
-#FormatData/ar_AE/NumberElements/8=<MISSING!>
-#FormatData/ar_AE/NumberElements/9=<MISSING!>
-#FormatData/ar_AE/NumberElements/10=<MISSING!>
+FormatData/ar_AE/arab.NumberElements/0=\u066b
+FormatData/ar_AE/arab.NumberElements/1=\u066c
+FormatData/ar_AE/arab.NumberElements/2=\u061b
+FormatData/ar_AE/arab.NumberElements/3=\u066a\u061c
+FormatData/ar_AE/arab.NumberElements/4=\u0660
+FormatData/ar_AE/arab.NumberElements/5=#
+FormatData/ar_AE/arab.NumberElements/6=\u061c-
+FormatData/ar_AE/arab.NumberElements/7=\u0627\u0633
+FormatData/ar_AE/arab.NumberElements/8=\u0609
+FormatData/ar_AE/arab.NumberElements/9=\u221e
+FormatData/ar_AE/arab.NumberElements/10=\u0644\u064a\u0633\u00a0\u0631\u0642\u0645
 CurrencyNames/ar_BH/BHD=\u062f.\u0628.\u200f
-FormatData/ar_BH/NumberPatterns/0=#,##0.###
+FormatData/ar_BH/arab.NumberPatterns/0=#,##0.###
 # FormatData/ar_BH/NumberPatterns/1='\u062f.\u0628.\u200f' #,##0.###;'\u062f.\u0628.\u200f' #,##0.###- # Changed; see bug 4122840
-FormatData/ar_BH/NumberPatterns/2=#,##0%
+FormatData/ar_BH/arab.NumberPatterns/2=#,##0%
 FormatData/ar_BH/DayNames/0=\u0627\u0644\u0623\u062d\u062f
 FormatData/ar_BH/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646
 FormatData/ar_BH/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621
@@ -899,21 +899,21 @@
 LocaleNames/ar_BH/TN=\u062a\u0648\u0646\u0633
 LocaleNames/ar_BH/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629
 LocaleNames/ar_BH/YE=\u0627\u0644\u064a\u0645\u0646
-#FormatData/ar_BH/NumberElements/0=<MISSING!>
-#FormatData/ar_BH/NumberElements/1=<MISSING!>
-#FormatData/ar_BH/NumberElements/2=<MISSING!>
-#FormatData/ar_BH/NumberElements/3=<MISSING!>
-#FormatData/ar_BH/NumberElements/4=<MISSING!>
-#FormatData/ar_BH/NumberElements/5=<MISSING!>
-#FormatData/ar_BH/NumberElements/6=<MISSING!>
-#FormatData/ar_BH/NumberElements/7=<MISSING!>
-#FormatData/ar_BH/NumberElements/8=<MISSING!>
-#FormatData/ar_BH/NumberElements/9=<MISSING!>
-#FormatData/ar_BH/NumberElements/10=<MISSING!>
+FormatData/ar_BH/arab.NumberElements/0=\u066b
+FormatData/ar_BH/arab.NumberElements/1=\u066c
+FormatData/ar_BH/arab.NumberElements/2=\u061b
+FormatData/ar_BH/arab.NumberElements/3=\u066a\u061c
+FormatData/ar_BH/arab.NumberElements/4=\u0660
+FormatData/ar_BH/arab.NumberElements/5=#
+FormatData/ar_BH/arab.NumberElements/6=\u061c-
+FormatData/ar_BH/arab.NumberElements/7=\u0627\u0633
+FormatData/ar_BH/arab.NumberElements/8=\u0609
+FormatData/ar_BH/arab.NumberElements/9=\u221e
+FormatData/ar_BH/arab.NumberElements/10=\u0644\u064a\u0633\u00a0\u0631\u0642\u0645
 CurrencyNames/ar_DZ/DZD=\u062f.\u062c.\u200f
-FormatData/ar_DZ/NumberPatterns/0=#,##0.###
+FormatData/ar_DZ/arab.NumberPatterns/0=#,##0.###
 # FormatData/ar_DZ/NumberPatterns/1='\u062f.\u062c.\u200f' #,##0.###;'\u062f.\u062c.\u200f' #,##0.###- # Changed; see bug 4122840
-FormatData/ar_DZ/NumberPatterns/2=#,##0%
+FormatData/ar_DZ/arab.NumberPatterns/2=#,##0%
 FormatData/ar_DZ/DayNames/0=\u0627\u0644\u0623\u062d\u062f
 FormatData/ar_DZ/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646
 FormatData/ar_DZ/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621
@@ -987,21 +987,21 @@
 LocaleNames/ar_DZ/TN=\u062a\u0648\u0646\u0633
 LocaleNames/ar_DZ/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629
 LocaleNames/ar_DZ/YE=\u0627\u0644\u064a\u0645\u0646
-#FormatData/ar_DZ/NumberElements/0=<MISSING!>
-#FormatData/ar_DZ/NumberElements/1=<MISSING!>
-#FormatData/ar_DZ/NumberElements/2=<MISSING!>
-#FormatData/ar_DZ/NumberElements/3=<MISSING!>
-#FormatData/ar_DZ/NumberElements/4=<MISSING!>
-#FormatData/ar_DZ/NumberElements/5=<MISSING!>
-#FormatData/ar_DZ/NumberElements/6=<MISSING!>
-#FormatData/ar_DZ/NumberElements/7=<MISSING!>
-#FormatData/ar_DZ/NumberElements/8=<MISSING!>
-#FormatData/ar_DZ/NumberElements/9=<MISSING!>
-#FormatData/ar_DZ/NumberElements/10=<MISSING!>
+FormatData/ar_DZ/arab.NumberElements/0=\u066b
+FormatData/ar_DZ/arab.NumberElements/1=\u066c
+FormatData/ar_DZ/arab.NumberElements/2=\u061b
+FormatData/ar_DZ/arab.NumberElements/3=\u066a\u061c
+FormatData/ar_DZ/arab.NumberElements/4=\u0660
+FormatData/ar_DZ/arab.NumberElements/5=#
+FormatData/ar_DZ/arab.NumberElements/6=\u061c-
+FormatData/ar_DZ/arab.NumberElements/7=\u0627\u0633
+FormatData/ar_DZ/arab.NumberElements/8=\u0609
+FormatData/ar_DZ/arab.NumberElements/9=\u221e
+FormatData/ar_DZ/arab.NumberElements/10=\u0644\u064a\u0633\u00a0\u0631\u0642\u0645
 CurrencyNames/ar_EG/EGP=\u062c.\u0645.\u200f
-FormatData/ar_EG/NumberPatterns/0=#,##0.###
+FormatData/ar_EG/arab.NumberPatterns/0=#,##0.###
 # FormatData/ar_EG/NumberPatterns/1='\u062c.\u0645.\u200f' #,##0.###;'\u062c.\u0645.\u200f' #,##0.###- # Changed; see bug 4122840
-FormatData/ar_EG/NumberPatterns/2=#,##0%
+FormatData/ar_EG/arab.NumberPatterns/2=#,##0%
 FormatData/ar_EG/DayNames/0=\u0627\u0644\u0623\u062d\u062f
 FormatData/ar_EG/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646
 FormatData/ar_EG/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621
@@ -1075,21 +1075,21 @@
 LocaleNames/ar_EG/TN=\u062a\u0648\u0646\u0633
 LocaleNames/ar_EG/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629
 LocaleNames/ar_EG/YE=\u0627\u0644\u064a\u0645\u0646
-#FormatData/ar_EG/NumberElements/0=<MISSING!>
-#FormatData/ar_EG/NumberElements/1=<MISSING!>
-#FormatData/ar_EG/NumberElements/2=<MISSING!>
-#FormatData/ar_EG/NumberElements/3=<MISSING!>
-#FormatData/ar_EG/NumberElements/4=<MISSING!>
-#FormatData/ar_EG/NumberElements/5=<MISSING!>
-#FormatData/ar_EG/NumberElements/6=<MISSING!>
-#FormatData/ar_EG/NumberElements/7=<MISSING!>
-#FormatData/ar_EG/NumberElements/8=<MISSING!>
-#FormatData/ar_EG/NumberElements/9=<MISSING!>
-#FormatData/ar_EG/NumberElements/10=<MISSING!>
+FormatData/ar_EG/arab.NumberElements/0=\u066b
+FormatData/ar_EG/arab.NumberElements/1=\u066c
+FormatData/ar_EG/arab.NumberElements/2=\u061b
+FormatData/ar_EG/arab.NumberElements/3=\u066a\u061c
+FormatData/ar_EG/arab.NumberElements/4=\u0660
+FormatData/ar_EG/arab.NumberElements/5=#
+FormatData/ar_EG/arab.NumberElements/6=\u061c-
+FormatData/ar_EG/arab.NumberElements/7=\u0627\u0633
+FormatData/ar_EG/arab.NumberElements/8=\u0609
+FormatData/ar_EG/arab.NumberElements/9=\u221e
+FormatData/ar_EG/arab.NumberElements/10=\u0644\u064a\u0633\u00a0\u0631\u0642\u0645
 CurrencyNames/ar_IQ/IQD=\u062f.\u0639.\u200f
-FormatData/ar_IQ/NumberPatterns/0=#,##0.###
+FormatData/ar_IQ/arab.NumberPatterns/0=#,##0.###
 # FormatData/ar_IQ/NumberPatterns/1='\u062f.\u0639.\u200f' #,##0.###;'\u062f.\u0639.\u200f' #,##0.###- # Changed; see bug 4122840
-FormatData/ar_IQ/NumberPatterns/2=#,##0%
+FormatData/ar_IQ/arab.NumberPatterns/2=#,##0%
 FormatData/ar_IQ/DayNames/0=\u0627\u0644\u0623\u062d\u062f
 FormatData/ar_IQ/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646
 FormatData/ar_IQ/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621
@@ -1163,20 +1163,20 @@
 LocaleNames/ar_IQ/TN=\u062a\u0648\u0646\u0633
 LocaleNames/ar_IQ/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629
 LocaleNames/ar_IQ/YE=\u0627\u0644\u064a\u0645\u0646
-#FormatData/ar_IQ/NumberElements/0=<MISSING!>
-#FormatData/ar_IQ/NumberElements/1=<MISSING!>
-#FormatData/ar_IQ/NumberElements/2=<MISSING!>
-#FormatData/ar_IQ/NumberElements/3=<MISSING!>
-#FormatData/ar_IQ/NumberElements/4=<MISSING!>
-#FormatData/ar_IQ/NumberElements/5=<MISSING!>
-#FormatData/ar_IQ/NumberElements/6=<MISSING!>
-#FormatData/ar_IQ/NumberElements/7=<MISSING!>
-#FormatData/ar_IQ/NumberElements/8=<MISSING!>
-#FormatData/ar_IQ/NumberElements/9=<MISSING!>
-#FormatData/ar_IQ/NumberElements/10=<MISSING!>
-FormatData/ar_JO/NumberPatterns/0=#,##0.###
+FormatData/ar_IQ/arab.NumberElements/0=\u066b
+FormatData/ar_IQ/arab.NumberElements/1=\u066c
+FormatData/ar_IQ/arab.NumberElements/2=\u061b
+FormatData/ar_IQ/arab.NumberElements/3=\u066a\u061c
+FormatData/ar_IQ/arab.NumberElements/4=\u0660
+FormatData/ar_IQ/arab.NumberElements/5=#
+FormatData/ar_IQ/arab.NumberElements/6=\u061c-
+FormatData/ar_IQ/arab.NumberElements/7=\u0627\u0633
+FormatData/ar_IQ/arab.NumberElements/8=\u0609
+FormatData/ar_IQ/arab.NumberElements/9=\u221e
+FormatData/ar_IQ/arab.NumberElements/10=\u0644\u064a\u0633\u00a0\u0631\u0642\u0645
+FormatData/ar_JO/arab.NumberPatterns/0=#,##0.###
 # FormatData/ar_JO/NumberPatterns/1='\u062f.\u0623.\u200f' #,##0.###;'\u062f.\u0623.\u200f' #,##0.###- # Changed; see bug 4122840
-FormatData/ar_JO/NumberPatterns/2=#,##0%
+FormatData/ar_JO/arab.NumberPatterns/2=#,##0%
 CurrencyNames/ar_JO/JOD=\u062f.\u0623.\u200f
 FormatData/ar_JO/DayAbbreviations/0=\u0627\u0644\u0623\u062d\u062f
 FormatData/ar_JO/DayAbbreviations/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646
@@ -1251,21 +1251,21 @@
 LocaleNames/ar_JO/TN=\u062a\u0648\u0646\u0633
 LocaleNames/ar_JO/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629
 LocaleNames/ar_JO/YE=\u0627\u0644\u064a\u0645\u0646
-#FormatData/ar_JO/NumberElements/0=<MISSING!>
-#FormatData/ar_JO/NumberElements/1=<MISSING!>
-#FormatData/ar_JO/NumberElements/2=<MISSING!>
-#FormatData/ar_JO/NumberElements/3=<MISSING!>
-#FormatData/ar_JO/NumberElements/4=<MISSING!>
-#FormatData/ar_JO/NumberElements/5=<MISSING!>
-#FormatData/ar_JO/NumberElements/6=<MISSING!>
-#FormatData/ar_JO/NumberElements/7=<MISSING!>
-#FormatData/ar_JO/NumberElements/8=<MISSING!>
-#FormatData/ar_JO/NumberElements/9=<MISSING!>
-#FormatData/ar_JO/NumberElements/10=<MISSING!>
+FormatData/ar_JO/arab.NumberElements/0=\u066b
+FormatData/ar_JO/arab.NumberElements/1=\u066c
+FormatData/ar_JO/arab.NumberElements/2=\u061b
+FormatData/ar_JO/arab.NumberElements/3=\u066a\u061c
+FormatData/ar_JO/arab.NumberElements/4=\u0660
+FormatData/ar_JO/arab.NumberElements/5=#
+FormatData/ar_JO/arab.NumberElements/6=\u061c-
+FormatData/ar_JO/arab.NumberElements/7=\u0627\u0633
+FormatData/ar_JO/arab.NumberElements/8=\u0609
+FormatData/ar_JO/arab.NumberElements/9=\u221e
+FormatData/ar_JO/arab.NumberElements/10=\u0644\u064a\u0633\u00a0\u0631\u0642\u0645
 CurrencyNames/ar_KW/KWD=\u062f.\u0643.\u200f
-FormatData/ar_KW/NumberPatterns/0=#,##0.###
+FormatData/ar_KW/arab.NumberPatterns/0=#,##0.###
 # FormatData/ar_KW/NumberPatterns/1='\u062f.\u0643.\u200f' #,##0.###;'\u062f.\u0643.\u200f' #,##0.###- # Changed; see bug 4122840
-FormatData/ar_KW/NumberPatterns/2=#,##0%
+FormatData/ar_KW/arab.NumberPatterns/2=#,##0%
 FormatData/ar_KW/DayNames/0=\u0627\u0644\u0623\u062d\u062f
 FormatData/ar_KW/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646
 FormatData/ar_KW/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621
@@ -1339,20 +1339,20 @@
 LocaleNames/ar_KW/TN=\u062a\u0648\u0646\u0633
 LocaleNames/ar_KW/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629
 LocaleNames/ar_KW/YE=\u0627\u0644\u064a\u0645\u0646
-#FormatData/ar_KW/NumberElements/0=<MISSING!>
-#FormatData/ar_KW/NumberElements/1=<MISSING!>
-#FormatData/ar_KW/NumberElements/2=<MISSING!>
-#FormatData/ar_KW/NumberElements/3=<MISSING!>
-#FormatData/ar_KW/NumberElements/4=<MISSING!>
-#FormatData/ar_KW/NumberElements/5=<MISSING!>
-#FormatData/ar_KW/NumberElements/6=<MISSING!>
-#FormatData/ar_KW/NumberElements/7=<MISSING!>
-#FormatData/ar_KW/NumberElements/8=<MISSING!>
-#FormatData/ar_KW/NumberElements/9=<MISSING!>
-#FormatData/ar_KW/NumberElements/10=<MISSING!>
-FormatData/ar_LB/NumberPatterns/0=#,##0.###
+FormatData/ar_KW/arab.NumberElements/0=\u066b
+FormatData/ar_KW/arab.NumberElements/1=\u066c
+FormatData/ar_KW/arab.NumberElements/2=\u061b
+FormatData/ar_KW/arab.NumberElements/3=\u066a\u061c
+FormatData/ar_KW/arab.NumberElements/4=\u0660
+FormatData/ar_KW/arab.NumberElements/5=#
+FormatData/ar_KW/arab.NumberElements/6=\u061c-
+FormatData/ar_KW/arab.NumberElements/7=\u0627\u0633
+FormatData/ar_KW/arab.NumberElements/8=\u0609
+FormatData/ar_KW/arab.NumberElements/9=\u221e
+FormatData/ar_KW/arab.NumberElements/10=\u0644\u064a\u0633\u00a0\u0631\u0642\u0645
+FormatData/ar_LB/arab.NumberPatterns/0=#,##0.###
 # FormatData/ar_LB/NumberPatterns/1='\u0644.\u0644.\u200f' #,##0.###;'\u0644.\u0644.\u200f' #,##0.###- # Changed; see bug 4122840
-FormatData/ar_LB/NumberPatterns/2=#,##0%
+FormatData/ar_LB/arab.NumberPatterns/2=#,##0%
 CurrencyNames/ar_LB/LBP=\u0644.\u0644.\u200f
 FormatData/ar_LB/DayAbbreviations/0=\u0627\u0644\u0623\u062d\u062f
 FormatData/ar_LB/DayAbbreviations/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646
@@ -1427,21 +1427,21 @@
 LocaleNames/ar_LB/TN=\u062a\u0648\u0646\u0633
 LocaleNames/ar_LB/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629
 LocaleNames/ar_LB/YE=\u0627\u0644\u064a\u0645\u0646
-#FormatData/ar_LB/NumberElements/0=<MISSING!>
-#FormatData/ar_LB/NumberElements/1=<MISSING!>
-#FormatData/ar_LB/NumberElements/2=<MISSING!>
-#FormatData/ar_LB/NumberElements/3=<MISSING!>
-#FormatData/ar_LB/NumberElements/4=<MISSING!>
-#FormatData/ar_LB/NumberElements/5=<MISSING!>
-#FormatData/ar_LB/NumberElements/6=<MISSING!>
-#FormatData/ar_LB/NumberElements/7=<MISSING!>
-#FormatData/ar_LB/NumberElements/8=<MISSING!>
-#FormatData/ar_LB/NumberElements/9=<MISSING!>
-#FormatData/ar_LB/NumberElements/10=<MISSING!>
+FormatData/ar_LB/arab.NumberElements/0=\u066b
+FormatData/ar_LB/arab.NumberElements/1=\u066c
+FormatData/ar_LB/arab.NumberElements/2=\u061b
+FormatData/ar_LB/arab.NumberElements/3=\u066a\u061c
+FormatData/ar_LB/arab.NumberElements/4=\u0660
+FormatData/ar_LB/arab.NumberElements/5=#
+FormatData/ar_LB/arab.NumberElements/6=\u061c-
+FormatData/ar_LB/arab.NumberElements/7=\u0627\u0633
+FormatData/ar_LB/arab.NumberElements/8=\u0609
+FormatData/ar_LB/arab.NumberElements/9=\u221e
+FormatData/ar_LB/arab.NumberElements/10=\u0644\u064a\u0633\u00a0\u0631\u0642\u0645
 CurrencyNames/ar_LY/LYD=\u062f.\u0644.\u200f
-FormatData/ar_LY/NumberPatterns/0=#,##0.###
+FormatData/ar_LY/arab.NumberPatterns/0=#,##0.###
 # FormatData/ar_LY/NumberPatterns/1='\u062f.\u0644.\u200f' #,##0.###;'\u062f.\u0644.\u200f' #,##0.###- # Changed; see bug 4122840
-FormatData/ar_LY/NumberPatterns/2=#,##0%
+FormatData/ar_LY/arab.NumberPatterns/2=#,##0%
 FormatData/ar_LY/DayNames/0=\u0627\u0644\u0623\u062d\u062f
 FormatData/ar_LY/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646
 FormatData/ar_LY/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621
@@ -1515,21 +1515,21 @@
 LocaleNames/ar_LY/TN=\u062a\u0648\u0646\u0633
 LocaleNames/ar_LY/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629
 LocaleNames/ar_LY/YE=\u0627\u0644\u064a\u0645\u0646
-#FormatData/ar_LY/NumberElements/0=<MISSING!>
-#FormatData/ar_LY/NumberElements/1=<MISSING!>
-#FormatData/ar_LY/NumberElements/2=<MISSING!>
-#FormatData/ar_LY/NumberElements/3=<MISSING!>
-#FormatData/ar_LY/NumberElements/4=<MISSING!>
-#FormatData/ar_LY/NumberElements/5=<MISSING!>
-#FormatData/ar_LY/NumberElements/6=<MISSING!>
-#FormatData/ar_LY/NumberElements/7=<MISSING!>
-#FormatData/ar_LY/NumberElements/8=<MISSING!>
-#FormatData/ar_LY/NumberElements/9=<MISSING!>
-#FormatData/ar_LY/NumberElements/10=<MISSING!>
+FormatData/ar_LY/arab.NumberElements/0=\u066b
+FormatData/ar_LY/arab.NumberElements/1=\u066c
+FormatData/ar_LY/arab.NumberElements/2=\u061b
+FormatData/ar_LY/arab.NumberElements/3=\u066a\u061c
+FormatData/ar_LY/arab.NumberElements/4=\u0660
+FormatData/ar_LY/arab.NumberElements/5=#
+FormatData/ar_LY/arab.NumberElements/6=\u061c-
+FormatData/ar_LY/arab.NumberElements/7=\u0627\u0633
+FormatData/ar_LY/arab.NumberElements/8=\u0609
+FormatData/ar_LY/arab.NumberElements/9=\u221e
+FormatData/ar_LY/arab.NumberElements/10=\u0644\u064a\u0633\u00a0\u0631\u0642\u0645
 CurrencyNames/ar_MA/MAD=\u062f.\u0645.\u200f
-FormatData/ar_MA/NumberPatterns/0=#,##0.###
+FormatData/ar_MA/arab.NumberPatterns/0=#,##0.###
 # FormatData/ar_MA/NumberPatterns/1='\u062f.\u0645.\u200f' #,##0.###;'\u062f.\u0645.\u200f' #,##0.###- # Changed; see bug 4122840
-FormatData/ar_MA/NumberPatterns/2=#,##0%
+FormatData/ar_MA/arab.NumberPatterns/2=#,##0%
 FormatData/ar_MA/DayNames/0=\u0627\u0644\u0623\u062d\u062f
 FormatData/ar_MA/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646
 FormatData/ar_MA/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621
@@ -1603,21 +1603,21 @@
 LocaleNames/ar_MA/TN=\u062a\u0648\u0646\u0633
 LocaleNames/ar_MA/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629
 LocaleNames/ar_MA/YE=\u0627\u0644\u064a\u0645\u0646
-#FormatData/ar_MA/NumberElements/0=<MISSING!>
-#FormatData/ar_MA/NumberElements/1=<MISSING!>
-#FormatData/ar_MA/NumberElements/2=<MISSING!>
-#FormatData/ar_MA/NumberElements/3=<MISSING!>
-#FormatData/ar_MA/NumberElements/4=<MISSING!>
-#FormatData/ar_MA/NumberElements/5=<MISSING!>
-#FormatData/ar_MA/NumberElements/6=<MISSING!>
-#FormatData/ar_MA/NumberElements/7=<MISSING!>
-#FormatData/ar_MA/NumberElements/8=<MISSING!>
-#FormatData/ar_MA/NumberElements/9=<MISSING!>
-#FormatData/ar_MA/NumberElements/10=<MISSING!>
+FormatData/ar_MA/arab.NumberElements/0=\u066b
+FormatData/ar_MA/arab.NumberElements/1=\u066c
+FormatData/ar_MA/arab.NumberElements/2=\u061b
+FormatData/ar_MA/arab.NumberElements/3=\u066a\u061c
+FormatData/ar_MA/arab.NumberElements/4=\u0660
+FormatData/ar_MA/arab.NumberElements/5=#
+FormatData/ar_MA/arab.NumberElements/6=\u061c-
+FormatData/ar_MA/arab.NumberElements/7=\u0627\u0633
+FormatData/ar_MA/arab.NumberElements/8=\u0609
+FormatData/ar_MA/arab.NumberElements/9=\u221e
+FormatData/ar_MA/arab.NumberElements/10=\u0644\u064a\u0633\u00a0\u0631\u0642\u0645
 CurrencyNames/ar_OM/OMR=\u0631.\u0639.\u200f
-FormatData/ar_OM/NumberPatterns/0=#,##0.###
+FormatData/ar_OM/arab.NumberPatterns/0=#,##0.###
 # FormatData/ar_OM/NumberPatterns/1='\u0631.\u0639.\u200f' #,##0.###;'\u0631.\u0639.\u200f' #,##0.###- # Changed; see bug 4122840
-FormatData/ar_OM/NumberPatterns/2=#,##0%
+FormatData/ar_OM/arab.NumberPatterns/2=#,##0%
 FormatData/ar_OM/DayNames/0=\u0627\u0644\u0623\u062d\u062f
 FormatData/ar_OM/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646
 FormatData/ar_OM/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621
@@ -1691,21 +1691,21 @@
 LocaleNames/ar_OM/TN=\u062a\u0648\u0646\u0633
 LocaleNames/ar_OM/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629
 LocaleNames/ar_OM/YE=\u0627\u0644\u064a\u0645\u0646
-#FormatData/ar_OM/NumberElements/0=<MISSING!>
-#FormatData/ar_OM/NumberElements/1=<MISSING!>
-#FormatData/ar_OM/NumberElements/2=<MISSING!>
-#FormatData/ar_OM/NumberElements/3=<MISSING!>
-#FormatData/ar_OM/NumberElements/4=<MISSING!>
-#FormatData/ar_OM/NumberElements/5=<MISSING!>
-#FormatData/ar_OM/NumberElements/6=<MISSING!>
-#FormatData/ar_OM/NumberElements/7=<MISSING!>
-#FormatData/ar_OM/NumberElements/8=<MISSING!>
-#FormatData/ar_OM/NumberElements/9=<MISSING!>
-#FormatData/ar_OM/NumberElements/10=<MISSING!>
+FormatData/ar_OM/arab.NumberElements/0=\u066b
+FormatData/ar_OM/arab.NumberElements/1=\u066c
+FormatData/ar_OM/arab.NumberElements/2=\u061b
+FormatData/ar_OM/arab.NumberElements/3=\u066a\u061c
+FormatData/ar_OM/arab.NumberElements/4=\u0660
+FormatData/ar_OM/arab.NumberElements/5=#
+FormatData/ar_OM/arab.NumberElements/6=\u061c-
+FormatData/ar_OM/arab.NumberElements/7=\u0627\u0633
+FormatData/ar_OM/arab.NumberElements/8=\u0609
+FormatData/ar_OM/arab.NumberElements/9=\u221e
+FormatData/ar_OM/arab.NumberElements/10=\u0644\u064a\u0633\u00a0\u0631\u0642\u0645
 CurrencyNames/ar_QA/QAR=\u0631.\u0642.\u200f
-FormatData/ar_QA/NumberPatterns/0=#,##0.###
+FormatData/ar_QA/arab.NumberPatterns/0=#,##0.###
 # FormatData/ar_QA/NumberPatterns/1='\u0631.\u0642.\u200f' #,##0.###;'\u0631.\u0642.\u200f' #,##0.###- # Changed; see bug 4122840
-FormatData/ar_QA/NumberPatterns/2=#,##0%
+FormatData/ar_QA/arab.NumberPatterns/2=#,##0%
 FormatData/ar_QA/DayNames/0=\u0627\u0644\u0623\u062d\u062f
 FormatData/ar_QA/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646
 FormatData/ar_QA/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621
@@ -1779,21 +1779,21 @@
 LocaleNames/ar_QA/TN=\u062a\u0648\u0646\u0633
 LocaleNames/ar_QA/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629
 LocaleNames/ar_QA/YE=\u0627\u0644\u064a\u0645\u0646
-#FormatData/ar_QA/NumberElements/0=<MISSING!>
-#FormatData/ar_QA/NumberElements/1=<MISSING!>
-#FormatData/ar_QA/NumberElements/2=<MISSING!>
-#FormatData/ar_QA/NumberElements/3=<MISSING!>
-#FormatData/ar_QA/NumberElements/4=<MISSING!>
-#FormatData/ar_QA/NumberElements/5=<MISSING!>
-#FormatData/ar_QA/NumberElements/6=<MISSING!>
-#FormatData/ar_QA/NumberElements/7=<MISSING!>
-#FormatData/ar_QA/NumberElements/8=<MISSING!>
-#FormatData/ar_QA/NumberElements/9=<MISSING!>
-#FormatData/ar_QA/NumberElements/10=<MISSING!>
+FormatData/ar_QA/arab.NumberElements/0=\u066b
+FormatData/ar_QA/arab.NumberElements/1=\u066c
+FormatData/ar_QA/arab.NumberElements/2=\u061b
+FormatData/ar_QA/arab.NumberElements/3=\u066a\u061c
+FormatData/ar_QA/arab.NumberElements/4=\u0660
+FormatData/ar_QA/arab.NumberElements/5=#
+FormatData/ar_QA/arab.NumberElements/6=\u061c-
+FormatData/ar_QA/arab.NumberElements/7=\u0627\u0633
+FormatData/ar_QA/arab.NumberElements/8=\u0609
+FormatData/ar_QA/arab.NumberElements/9=\u221e
+FormatData/ar_QA/arab.NumberElements/10=\u0644\u064a\u0633\u00a0\u0631\u0642\u0645
 CurrencyNames/ar_SA/SAR=\u0631.\u0633.\u200f
-FormatData/ar_SA/NumberPatterns/0=#,##0.###
+FormatData/ar_SA/arab.NumberPatterns/0=#,##0.###
 # FormatData/ar_SA/NumberPatterns/1='\u0631.\u0633.\u200f' #,##0.###;'\u0631.\u0633.\u200f' #,##0.###- # Changed; see bug 4122840
-FormatData/ar_SA/NumberPatterns/2=#,##0%
+FormatData/ar_SA/arab.NumberPatterns/2=#,##0%
 FormatData/ar_SA/DayNames/0=\u0627\u0644\u0623\u062d\u062f
 FormatData/ar_SA/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646
 FormatData/ar_SA/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621
@@ -1867,22 +1867,22 @@
 LocaleNames/ar_SA/TN=\u062a\u0648\u0646\u0633
 LocaleNames/ar_SA/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629
 LocaleNames/ar_SA/YE=\u0627\u0644\u064a\u0645\u0646
-#FormatData/ar_SA/NumberElements/0=<MISSING!>
-#FormatData/ar_SA/NumberElements/1=<MISSING!>
-#FormatData/ar_SA/NumberElements/2=<MISSING!>
-#FormatData/ar_SA/NumberElements/3=<MISSING!>
-#FormatData/ar_SA/NumberElements/4=<MISSING!>
-#FormatData/ar_SA/NumberElements/5=<MISSING!>
-#FormatData/ar_SA/NumberElements/6=<MISSING!>
-#FormatData/ar_SA/NumberElements/7=<MISSING!>
-#FormatData/ar_SA/NumberElements/8=<MISSING!>
-#FormatData/ar_SA/NumberElements/9=<MISSING!>
-#FormatData/ar_SA/NumberElements/10=<MISSING!>
+FormatData/ar_SA/arab.NumberElements/0=\u066b
+FormatData/ar_SA/arab.NumberElements/1=\u066c
+FormatData/ar_SA/arab.NumberElements/2=\u061b
+FormatData/ar_SA/arab.NumberElements/3=\u066a\u061c
+FormatData/ar_SA/arab.NumberElements/4=\u0660
+FormatData/ar_SA/arab.NumberElements/5=#
+FormatData/ar_SA/arab.NumberElements/6=\u061c-
+FormatData/ar_SA/arab.NumberElements/7=\u0627\u0633
+FormatData/ar_SA/arab.NumberElements/8=\u0609
+FormatData/ar_SA/arab.NumberElements/9=\u221e
+FormatData/ar_SA/arab.NumberElements/10=\u0644\u064a\u0633\u00a0\u0631\u0642\u0645
 # changed for 4945388, removed for 6531591, see bellow
 # CurrencyNames/ar_SD/SDD=\u062c.\u0633.\u200f
-FormatData/ar_SD/NumberPatterns/0=#,##0.###
+FormatData/ar_SD/arab.NumberPatterns/0=#,##0.###
 # FormatData/ar_SD/NumberPatterns/1='\u062c.\u0633.\u200f' #,##0.###;'\u062c.\u0633.\u200f' #,##0.###- # Changed; see bug 4122840
-FormatData/ar_SD/NumberPatterns/2=#,##0%
+FormatData/ar_SD/arab.NumberPatterns/2=#,##0%
 FormatData/ar_SD/DayNames/0=\u0627\u0644\u0623\u062d\u062f
 FormatData/ar_SD/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646
 FormatData/ar_SD/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621
@@ -1956,20 +1956,20 @@
 LocaleNames/ar_SD/TN=\u062a\u0648\u0646\u0633
 LocaleNames/ar_SD/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629
 LocaleNames/ar_SD/YE=\u0627\u0644\u064a\u0645\u0646
-#FormatData/ar_SD/NumberElements/0=<MISSING!>
-#FormatData/ar_SD/NumberElements/1=<MISSING!>
-#FormatData/ar_SD/NumberElements/2=<MISSING!>
-#FormatData/ar_SD/NumberElements/3=<MISSING!>
-#FormatData/ar_SD/NumberElements/4=<MISSING!>
-#FormatData/ar_SD/NumberElements/5=<MISSING!>
-#FormatData/ar_SD/NumberElements/6=<MISSING!>
-#FormatData/ar_SD/NumberElements/7=<MISSING!>
-#FormatData/ar_SD/NumberElements/8=<MISSING!>
-#FormatData/ar_SD/NumberElements/9=<MISSING!>
-#FormatData/ar_SD/NumberElements/10=<MISSING!>
-FormatData/ar_SY/NumberPatterns/0=#,##0.###
+FormatData/ar_SD/arab.NumberElements/0=\u066b
+FormatData/ar_SD/arab.NumberElements/1=\u066c
+FormatData/ar_SD/arab.NumberElements/2=\u061b
+FormatData/ar_SD/arab.NumberElements/3=\u066a\u061c
+FormatData/ar_SD/arab.NumberElements/4=\u0660
+FormatData/ar_SD/arab.NumberElements/5=#
+FormatData/ar_SD/arab.NumberElements/6=\u061c-
+FormatData/ar_SD/arab.NumberElements/7=\u0627\u0633
+FormatData/ar_SD/arab.NumberElements/8=\u0609
+FormatData/ar_SD/arab.NumberElements/9=\u221e
+FormatData/ar_SD/arab.NumberElements/10=\u0644\u064a\u0633\u00a0\u0631\u0642\u0645
+FormatData/ar_SY/arab.NumberPatterns/0=#,##0.###
 # FormatData/ar_SY/NumberPatterns/1='\u0644.\u0633.\u200f' #,##0.###;'\u0644.\u0633.\u200f' #,##0.###- # Changed; see bug 4122840
-FormatData/ar_SY/NumberPatterns/2=#,##0%
+FormatData/ar_SY/arab.NumberPatterns/2=#,##0%
 CurrencyNames/ar_SY/SYP=\u0644.\u0633.\u200f
 FormatData/ar_SY/DayAbbreviations/0=\u0627\u0644\u0623\u062d\u062f
 FormatData/ar_SY/DayAbbreviations/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646
@@ -2044,21 +2044,21 @@
 LocaleNames/ar_SY/TN=\u062a\u0648\u0646\u0633
 LocaleNames/ar_SY/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629
 LocaleNames/ar_SY/YE=\u0627\u0644\u064a\u0645\u0646
-#FormatData/ar_SY/NumberElements/0=<MISSING!>
-#FormatData/ar_SY/NumberElements/1=<MISSING!>
-#FormatData/ar_SY/NumberElements/2=<MISSING!>
-#FormatData/ar_SY/NumberElements/3=<MISSING!>
-#FormatData/ar_SY/NumberElements/4=<MISSING!>
-#FormatData/ar_SY/NumberElements/5=<MISSING!>
-#FormatData/ar_SY/NumberElements/6=<MISSING!>
-#FormatData/ar_SY/NumberElements/7=<MISSING!>
-#FormatData/ar_SY/NumberElements/8=<MISSING!>
-#FormatData/ar_SY/NumberElements/9=<MISSING!>
-#FormatData/ar_SY/NumberElements/10=<MISSING!>
+FormatData/ar_SY/arab.NumberElements/0=\u066b
+FormatData/ar_SY/arab.NumberElements/1=\u066c
+FormatData/ar_SY/arab.NumberElements/2=\u061b
+FormatData/ar_SY/arab.NumberElements/3=\u066a\u061c
+FormatData/ar_SY/arab.NumberElements/4=\u0660
+FormatData/ar_SY/arab.NumberElements/5=#
+FormatData/ar_SY/arab.NumberElements/6=\u061c-
+FormatData/ar_SY/arab.NumberElements/7=\u0627\u0633
+FormatData/ar_SY/arab.NumberElements/8=\u0609
+FormatData/ar_SY/arab.NumberElements/9=\u221e
+FormatData/ar_SY/arab.NumberElements/10=\u0644\u064a\u0633\u00a0\u0631\u0642\u0645
 CurrencyNames/ar_TN/TND=\u062f.\u062a.\u200f
-FormatData/ar_TN/NumberPatterns/0=#,##0.###
+FormatData/ar_TN/arab.NumberPatterns/0=#,##0.###
 # FormatData/ar_TN/NumberPatterns/1='\u062f.\u062a.\u200f' #,##0.###;'\u062f.\u062a.\u200f' #,##0.###- # Changed; see bug 4122840
-FormatData/ar_TN/NumberPatterns/2=#,##0%
+FormatData/ar_TN/arab.NumberPatterns/2=#,##0%
 FormatData/ar_TN/DayNames/0=\u0627\u0644\u0623\u062d\u062f
 FormatData/ar_TN/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646
 FormatData/ar_TN/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621
@@ -2132,21 +2132,21 @@
 LocaleNames/ar_TN/TN=\u062a\u0648\u0646\u0633
 LocaleNames/ar_TN/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629
 LocaleNames/ar_TN/YE=\u0627\u0644\u064a\u0645\u0646
-#FormatData/ar_TN/NumberElements/0=<MISSING!>
-#FormatData/ar_TN/NumberElements/1=<MISSING!>
-#FormatData/ar_TN/NumberElements/2=<MISSING!>
-#FormatData/ar_TN/NumberElements/3=<MISSING!>
-#FormatData/ar_TN/NumberElements/4=<MISSING!>
-#FormatData/ar_TN/NumberElements/5=<MISSING!>
-#FormatData/ar_TN/NumberElements/6=<MISSING!>
-#FormatData/ar_TN/NumberElements/7=<MISSING!>
-#FormatData/ar_TN/NumberElements/8=<MISSING!>
-#FormatData/ar_TN/NumberElements/9=<MISSING!>
-#FormatData/ar_TN/NumberElements/10=<MISSING!>
+FormatData/ar_TN/arab.NumberElements/0=\u066b
+FormatData/ar_TN/arab.NumberElements/1=\u066c
+FormatData/ar_TN/arab.NumberElements/2=\u061b
+FormatData/ar_TN/arab.NumberElements/3=\u066a\u061c
+FormatData/ar_TN/arab.NumberElements/4=\u0660
+FormatData/ar_TN/arab.NumberElements/5=#
+FormatData/ar_TN/arab.NumberElements/6=\u061c-
+FormatData/ar_TN/arab.NumberElements/7=\u0627\u0633
+FormatData/ar_TN/arab.NumberElements/8=\u0609
+FormatData/ar_TN/arab.NumberElements/9=\u221e
+FormatData/ar_TN/arab.NumberElements/10=\u0644\u064a\u0633\u00a0\u0631\u0642\u0645
 CurrencyNames/ar_YE/YER=\u0631.\u064a.\u200f
-FormatData/ar_YE/NumberPatterns/0=#,##0.###
+FormatData/ar_YE/arab.NumberPatterns/0=#,##0.###
 # FormatData/ar_YE/NumberPatterns/1='\u0631.\u064a.\u200f' #,##0.###;'\u0631.\u064a.\u200f' #,##0.###- # Changed; see bug 4122840
-FormatData/ar_YE/NumberPatterns/2=#,##0%
+FormatData/ar_YE/arab.NumberPatterns/2=#,##0%
 FormatData/ar_YE/DayNames/0=\u0627\u0644\u0623\u062d\u062f
 FormatData/ar_YE/DayNames/1=\u0627\u0644\u0627\u062b\u0646\u064a\u0646
 FormatData/ar_YE/DayNames/2=\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621
@@ -2220,30 +2220,30 @@
 LocaleNames/ar_YE/TN=\u062a\u0648\u0646\u0633
 LocaleNames/ar_YE/AE=\u0627\u0644\u0625\u0645\u0627\u0631\u0627\u062a \u0627\u0644\u0639\u0631\u0628\u064a\u0629 \u0627\u0644\u0645\u062a\u062d\u062f\u0629
 LocaleNames/ar_YE/YE=\u0627\u0644\u064a\u0645\u0646
-#FormatData/ar_YE/NumberElements/0=<MISSING!>
-#FormatData/ar_YE/NumberElements/1=<MISSING!>
-#FormatData/ar_YE/NumberElements/2=<MISSING!>
-#FormatData/ar_YE/NumberElements/3=<MISSING!>
-#FormatData/ar_YE/NumberElements/4=<MISSING!>
-#FormatData/ar_YE/NumberElements/5=<MISSING!>
-#FormatData/ar_YE/NumberElements/6=<MISSING!>
-#FormatData/ar_YE/NumberElements/7=<MISSING!>
-#FormatData/ar_YE/NumberElements/8=<MISSING!>
-#FormatData/ar_YE/NumberElements/9=<MISSING!>
-#FormatData/ar_YE/NumberElements/10=<MISSING!>
+FormatData/ar_YE/arab.NumberElements/0=\u066b
+FormatData/ar_YE/arab.NumberElements/1=\u066c
+FormatData/ar_YE/arab.NumberElements/2=\u061b
+FormatData/ar_YE/arab.NumberElements/3=\u066a\u061c
+FormatData/ar_YE/arab.NumberElements/4=\u0660
+FormatData/ar_YE/arab.NumberElements/5=#
+FormatData/ar_YE/arab.NumberElements/6=\u061c-
+FormatData/ar_YE/arab.NumberElements/7=\u0627\u0633
+FormatData/ar_YE/arab.NumberElements/8=\u0609
+FormatData/ar_YE/arab.NumberElements/9=\u221e
+FormatData/ar_YE/arab.NumberElements/10=\u0644\u064a\u0633\u00a0\u0631\u0642\u0645
 
 # bug #4113654 (this is obviously not an exchaustive test; I'm trying it here for a single
 # inheritance chain only.  This bug fix also gets tested fairly well by the tests for all
 # the other bugs as given above)
-FormatData//NumberPatterns/0=#,##0.###
+FormatData//latn.NumberPatterns/0=#,##0.###
 # FormatData//NumberPatterns/1=\u00a4 #,##0.00;-\u00a4 #,##0.00 # Changed; see bug 4122840
-FormatData//NumberPatterns/2=#,##0%
-FormatData/fr/NumberPatterns/0=#,##0.###
+FormatData//latn.NumberPatterns/2=#,##0%
+FormatData/fr/latn.NumberPatterns/0=#,##0.###
 # FormatData/fr/NumberPatterns/1=\u00a4 #,##0.00;-\u00a4 #,##0.00 # Changed; see bug 4122840
 # FormatData/fr/NumberPatterns/2=#,##0% # changed, see bug 6547501
 CurrencyNames/fr_FR/FRF=F
 CurrencyNames/fr_FR/EUR=\u20ac
-FormatData/fr_FR/NumberPatterns/0=#,##0.###
+FormatData/fr_FR/latn.NumberPatterns/0=#,##0.###
 # FormatData/fr_FR/NumberPatterns/1=#,##0.00 F;-#,##0.00 F # Changed; see bug 4122840
 # FormatData/fr_FR/NumberPatterns/2=#,##0% # changed; see bug 6547501
 FormatData/fr_FR/DayNames/0=dimanche
@@ -2290,17 +2290,17 @@
 FormatData/fr_FR/DatePatterns/2=d MMM y
 FormatData/fr_FR/DatePatterns/3=dd/MM/y
 FormatData/fr_FR/DateTimePatterns/0={1} '\u00e0' {0}
-#FormatData/fr_FR/NumberElements/0=<MISSING!>
-#FormatData/fr_FR/NumberElements/1=<MISSING!>
-#FormatData/fr_FR/NumberElements/2=<MISSING!>
-#FormatData/fr_FR/NumberElements/3=<MISSING!>
-#FormatData/fr_FR/NumberElements/4=<MISSING!>
-#FormatData/fr_FR/NumberElements/5=<MISSING!>
-#FormatData/fr_FR/NumberElements/6=<MISSING!>
-#FormatData/fr_FR/NumberElements/7=<MISSING!>
-#FormatData/fr_FR/NumberElements/8=<MISSING!>
-#FormatData/fr_FR/NumberElements/9=<MISSING!>
-#FormatData/fr_FR/NumberElements/10=<MISSING!>
+FormatData/fr_FR/latn.NumberElements/0=,
+FormatData/fr_FR/latn.NumberElements/1=\u202f
+FormatData/fr_FR/latn.NumberElements/2=;
+FormatData/fr_FR/latn.NumberElements/3=%
+FormatData/fr_FR/latn.NumberElements/4=0
+FormatData/fr_FR/latn.NumberElements/5=#
+FormatData/fr_FR/latn.NumberElements/6=-
+FormatData/fr_FR/latn.NumberElements/7=E
+FormatData/fr_FR/latn.NumberElements/8=\u2030
+FormatData/fr_FR/latn.NumberElements/9=\u221e
+FormatData/fr_FR/latn.NumberElements/10=NaN
 FormatData/fr_FR/Eras/0=av. J.-C.
 FormatData/fr_FR/Eras/1=ap. J.-C.
 LocaleNames/fr_FR/FR=France
@@ -2352,53 +2352,53 @@
 FormatData/ja_JP/AmPmMarkers/1=\u5348\u5f8c
 
 # bug #4122840, 4290801
-FormatData/ar_AE/NumberPatterns/1=\u00a4\u00a0#,##0.00
-FormatData/ar_BH/NumberPatterns/1=\u00a4\u00a0#,##0.00
-FormatData/ar_DZ/NumberPatterns/1=\u00a4\u00a0#,##0.00
-FormatData/ar_EG/NumberPatterns/1=\u00a4\u00a0#,##0.00
-FormatData/ar_IQ/NumberPatterns/1=\u00a4\u00a0#,##0.00
-FormatData/ar_JO/NumberPatterns/1=\u00a4\u00a0#,##0.00
-FormatData/ar_KW/NumberPatterns/1=\u00a4\u00a0#,##0.00
-FormatData/ar_LB/NumberPatterns/1=\u00a4\u00a0#,##0.00
-FormatData/ar_LY/NumberPatterns/1=\u00a4\u00a0#,##0.00
-FormatData/ar_MA/NumberPatterns/1=\u00a4\u00a0#,##0.00
-FormatData/ar_OM/NumberPatterns/1=\u00a4\u00a0#,##0.00
-FormatData/ar_QA/NumberPatterns/1=\u00a4\u00a0#,##0.00
-FormatData/ar_SA/NumberPatterns/1=\u00a4\u00a0#,##0.00
-FormatData/ar_SD/NumberPatterns/1=\u00a4\u00a0#,##0.00
-FormatData/ar_SY/NumberPatterns/1=\u00a4\u00a0#,##0.00
-FormatData/ar_TN/NumberPatterns/1=\u00a4\u00a0#,##0.00
-FormatData/ar_YE/NumberPatterns/1=\u00a4\u00a0#,##0.00
-FormatData/en_AU/NumberPatterns/1=\u00a4#,##0.00
-FormatData/en_NZ/NumberPatterns/1=\u00a4#,##0.00
-FormatData/en_ZA/NumberPatterns/1=\u00a4#,##0.00
-FormatData/es_AR/NumberPatterns/1=\u00a4\u00a0#,##0.00
-FormatData/es_BO/NumberPatterns/1=\u00a4#,##0.00
-FormatData/es_CL/NumberPatterns/1=\u00a4#,##0.00;\u00a4-#,##0.00
-FormatData/es_CO/NumberPatterns/1=\u00a4\u00a0#,##0.00
-FormatData/es_CR/NumberPatterns/1=\u00a4#,##0.00
-FormatData/es_DO/NumberPatterns/1=\u00a4#,##0.00
-FormatData/es_EC/NumberPatterns/1=\u00a4#,##0.00;\u00a4-#,##0.00
-FormatData/es_GT/NumberPatterns/1=\u00a4#,##0.00
-FormatData/es_HN/NumberPatterns/1=\u00a4#,##0.00
-FormatData/es_MX/NumberPatterns/1=\u00a4#,##0.00
-FormatData/es_NI/NumberPatterns/1=\u00a4#,##0.00
-FormatData/es_PA/NumberPatterns/1=\u00a4#,##0.00
-FormatData/es_PE/NumberPatterns/1=\u00a4\u00a0#,##0.00
-FormatData/es_PR/NumberPatterns/1=\u00a4#,##0.00
-FormatData/es_PY/NumberPatterns/1=\u00a4\u00a0#,##0.00;\u00a4\u00a0-#,##0.00
-FormatData/es_SV/NumberPatterns/1=\u00a4#,##0.00
-FormatData/es_UY/NumberPatterns/1=\u00a4\u00a0#,##0.00
-FormatData/es_VE/NumberPatterns/1=\u00a4#,##0.00;\u00a4-#,##0.00
-FormatData/fr_FR/NumberPatterns/1=#,##0.00\u00a0\u00a4
-FormatData/it_IT/NumberPatterns/1=#,##0.00\u00a0\u00a4
+FormatData/ar_AE/arab.NumberPatterns/1=#,##0.00\u00a0\u00a4
+FormatData/ar_BH/arab.NumberPatterns/1=#,##0.00\u00a0\u00a4
+FormatData/ar_DZ/arab.NumberPatterns/1=#,##0.00\u00a0\u00a4
+FormatData/ar_EG/arab.NumberPatterns/1=#,##0.00\u00a0\u00a4
+FormatData/ar_IQ/arab.NumberPatterns/1=#,##0.00\u00a0\u00a4
+FormatData/ar_JO/arab.NumberPatterns/1=#,##0.00\u00a0\u00a4
+FormatData/ar_KW/arab.NumberPatterns/1=#,##0.00\u00a0\u00a4
+FormatData/ar_LB/arab.NumberPatterns/1=#,##0.00\u00a0\u00a4
+FormatData/ar_LY/arab.NumberPatterns/1=#,##0.00\u00a0\u00a4
+FormatData/ar_MA/arab.NumberPatterns/1=#,##0.00\u00a0\u00a4
+FormatData/ar_OM/arab.NumberPatterns/1=#,##0.00\u00a0\u00a4
+FormatData/ar_QA/arab.NumberPatterns/1=#,##0.00\u00a0\u00a4
+FormatData/ar_SA/arab.NumberPatterns/1=#,##0.00\u00a0\u00a4
+FormatData/ar_SD/arab.NumberPatterns/1=#,##0.00\u00a0\u00a4
+FormatData/ar_SY/arab.NumberPatterns/1=#,##0.00\u00a0\u00a4
+FormatData/ar_TN/arab.NumberPatterns/1=#,##0.00\u00a0\u00a4
+FormatData/ar_YE/arab.NumberPatterns/1=#,##0.00\u00a0\u00a4
+FormatData/en_AU/latn.NumberPatterns/1=\u00a4#,##0.00
+FormatData/en_NZ/latn.NumberPatterns/1=\u00a4#,##0.00
+FormatData/en_ZA/latn.NumberPatterns/1=\u00a4#,##0.00
+FormatData/es_AR/latn.NumberPatterns/1=\u00a4\u00a0#,##0.00
+FormatData/es_BO/latn.NumberPatterns/1=\u00a4#,##0.00
+FormatData/es_CL/latn.NumberPatterns/1=\u00a4#,##0.00;\u00a4-#,##0.00
+FormatData/es_CO/latn.NumberPatterns/1=\u00a4\u00a0#,##0.00
+FormatData/es_CR/latn.NumberPatterns/1=\u00a4#,##0.00
+FormatData/es_DO/latn.NumberPatterns/1=\u00a4#,##0.00
+FormatData/es_EC/latn.NumberPatterns/1=\u00a4#,##0.00;\u00a4-#,##0.00
+FormatData/es_GT/latn.NumberPatterns/1=\u00a4#,##0.00
+FormatData/es_HN/latn.NumberPatterns/1=\u00a4#,##0.00
+FormatData/es_MX/latn.NumberPatterns/1=\u00a4#,##0.00
+FormatData/es_NI/latn.NumberPatterns/1=\u00a4#,##0.00
+FormatData/es_PA/latn.NumberPatterns/1=\u00a4#,##0.00
+FormatData/es_PE/latn.NumberPatterns/1=\u00a4\u00a0#,##0.00
+FormatData/es_PR/latn.NumberPatterns/1=\u00a4#,##0.00
+FormatData/es_PY/latn.NumberPatterns/1=\u00a4\u00a0#,##0.00;\u00a4\u00a0-#,##0.00
+FormatData/es_SV/latn.NumberPatterns/1=\u00a4#,##0.00
+FormatData/es_UY/latn.NumberPatterns/1=\u00a4\u00a0#,##0.00
+FormatData/es_VE/latn.NumberPatterns/1=\u00a4#,##0.00;\u00a4-#,##0.00
+FormatData/fr_FR/latn.NumberPatterns/1=#,##0.00\u00a0\u00a4
+FormatData/it_IT/latn.NumberPatterns/1=#,##0.00\u00a0\u00a4
 #FormatData/ja_JP/NumberPatterns/1=\u00a4#,##0.00  #see bug 4175306
-FormatData/ko_KR/NumberPatterns/1=\u00a4#,##0.00
-FormatData/pl_PL/NumberPatterns/1=#,##0.00\u00a0\u00a4
-FormatData/pt_BR/NumberPatterns/1=\u00a4\u00a0#,##0.00
+FormatData/ko_KR/latn.NumberPatterns/1=\u00a4#,##0.00
+FormatData/pl_PL/latn.NumberPatterns/1=#,##0.00\u00a0\u00a4
+FormatData/pt_BR/latn.NumberPatterns/1=\u00a4\u00a0#,##0.00
 #Changed; see 4936845
-FormatData/ru_RU/NumberPatterns/1=#,##0.00\u00a0\u00a4
-FormatData/uk_UA/NumberPatterns/1=#,##0.00\u00a0\u00a4
+FormatData/ru_RU/latn.NumberPatterns/1=#,##0.00\u00a0\u00a4
+FormatData/uk_UA/latn.NumberPatterns/1=#,##0.00\u00a0\u00a4
 
 # bug #4122468 # Use common country names
 #LocaleNames//CI=<MISSING!>
@@ -2411,13 +2411,13 @@
 FormatData/cs/DatePatterns/1=d. MMMM y
 FormatData/cs/DatePatterns/2=d. M. y
 FormatData/cs/DatePatterns/3=dd.MM.yy
-#FormatData/cs/NumberElements/1=<MISSING!>
-FormatData/cs_CZ/NumberPatterns/0=#,##0.###
-FormatData/cs_CZ/NumberPatterns/1=#,##0.00\u00a0\u00a4
-FormatData/cs_CZ/NumberPatterns/2=#,##0\u00a0%
+FormatData/cs/latn.NumberElements/1=\u00a0
+FormatData/cs_CZ/latn.NumberPatterns/0=#,##0.###
+FormatData/cs_CZ/latn.NumberPatterns/1=#,##0.00\u00a0\u00a4
+FormatData/cs_CZ/latn.NumberPatterns/2=#,##0\u00a0%
 
 #bug #4135752
-FormatData/th_TH/NumberPatterns/1=\u00a4#,##0.00
+FormatData/th_TH/latn.NumberPatterns/1=\u00a4#,##0.00
 CurrencyNames/th_TH/THB=\u0e3f
 
 #bug #4153698
@@ -2438,7 +2438,7 @@
 FormatData/zh_HK/DayAbbreviations/0=\u9031\u65e5
 FormatData/zh_HK/DayAbbreviations/1=\u9031\u4e00
 FormatData/zh_HK/DayAbbreviations/2=\u9031\u4e8c
-FormatData/zh_HK/NumberPatterns/1=\u00a4#,##0.00
+FormatData/zh_HK/latn.NumberPatterns/1=\u00a4#,##0.00
 CurrencyNames/zh_HK/HKD=HK$
 FormatData/zh_HK/TimePatterns/0=ah:mm:ss [zzzz]
 FormatData/zh_HK/TimePatterns/1=ah:mm:ss [z]
@@ -2454,8 +2454,8 @@
 LocaleNames/tr/TR=T\u00fcrkiye
 
 #bug 4175306
-FormatData/es_ES/NumberPatterns/1=#,##0.00\u00a0\u00a4
-FormatData/ja_JP/NumberPatterns/1=\u00a4#,##0.00
+FormatData/es_ES/latn.NumberPatterns/1=#,##0.00\u00a0\u00a4
+FormatData/ja_JP/latn.NumberPatterns/1=\u00a4#,##0.00
 
 #bug #4215747 - commented out by mfang due to 4900884
 #FormatData/ko/TimePatterns/0=a h'\uc2dc' m'\ubd84' s'\ucd08' z
@@ -2507,7 +2507,7 @@
 CurrencyNames/bg_BG/BGN=\u043b\u0432.
 
 #bug 4794068
-FormatData/ca_ES/NumberPatterns/0=#,##0.###
+FormatData/ca_ES/latn.NumberPatterns/0=#,##0.###
 
 #bug 5032580
 FormatData/sk/DayNames/0=nede\u013ea
@@ -2517,7 +2517,7 @@
 FormatData/bg/DayNames/4=\u0447\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a
 
 #bug 2121133
-#FormatData/sv/NumberElements/1=<MISSING!>
+FormatData/sv/latn.NumberElements/1=\u00a0
 
 #bug 6208712
 LocaleNames/zh/tw=\u5951\u7ef4\u8bed
@@ -2535,9 +2535,9 @@
 FormatData/zh_SG/DayAbbreviations/4=\u5468\u56db
 FormatData/zh_SG/DayAbbreviations/5=\u5468\u4e94
 FormatData/zh_SG/DayAbbreviations/6=\u5468\u516d
-FormatData/zh_SG/NumberPatterns/0=#,##0.###
-FormatData/zh_SG/NumberPatterns/1=\u00a4#,##0.00
-FormatData/zh_SG/NumberPatterns/2=#,##0%
+FormatData/zh_SG/latn.NumberPatterns/0=#,##0.###
+FormatData/zh_SG/latn.NumberPatterns/1=\u00a4#,##0.00
+FormatData/zh_SG/latn.NumberPatterns/2=#,##0%
 CurrencyNames/zh_SG/SGD=$
 FormatData/zh_SG/TimePatterns/0=zzzz ah:mm:ss
 FormatData/zh_SG/TimePatterns/1=z ah:mm:ss
@@ -2604,9 +2604,9 @@
 LocaleNames/zh_SG/WS=\u8428\u6469\u4e9a
 LocaleNames/zh_SG/YT=\u9a6c\u7ea6\u7279
 #en_SG
-FormatData/en_SG/NumberPatterns/0=#,##0.###
-FormatData/en_SG/NumberPatterns/1=\u00a4#,##0.00
-FormatData/en_SG/NumberPatterns/2=#,##0%
+FormatData/en_SG/latn.NumberPatterns/0=#,##0.###
+FormatData/en_SG/latn.NumberPatterns/1=\u00a4#,##0.00
+FormatData/en_SG/latn.NumberPatterns/2=#,##0%
 CurrencyNames/en_SG/SGD=$
 LocaleNames/en_SG/kj=Kuanyama
 LocaleNames/en_SG/kl=Kalaallisut
@@ -2671,20 +2671,20 @@
 FormatData/in/DayAbbreviations/6=Sab
 FormatData/in/Eras/0=SM
 FormatData/in/Eras/1=M
-FormatData/in/NumberPatterns/0=#,##0.###
-FormatData/in/NumberPatterns/1=\u00a4#,##0.00
-FormatData/in/NumberPatterns/2=#,##0%
-#FormatData/in/NumberElements/0=<MISSING!>
-#FormatData/in/NumberElements/1=<MISSING!>
-#FormatData/in/NumberElements/2=<MISSING!>
-#FormatData/in/NumberElements/3=<MISSING!>
-#FormatData/in/NumberElements/4=<MISSING!>
-#FormatData/in/NumberElements/5=<MISSING!>
-#FormatData/in/NumberElements/6=<MISSING!>
-#FormatData/in/NumberElements/7=<MISSING!>
-#FormatData/in/NumberElements/8=<MISSING!>
-#FormatData/in/NumberElements/9=<MISSING!>
-#FormatData/in/NumberElements/10=<MISSING!>
+FormatData/in/latn.NumberPatterns/0=#,##0.###
+FormatData/in/latn.NumberPatterns/1=\u00a4#,##0.00
+FormatData/in/latn.NumberPatterns/2=#,##0%
+FormatData/in/latn.NumberElements/0=,
+FormatData/in/latn.NumberElements/1=.
+FormatData/in/latn.NumberElements/2=;
+FormatData/in/latn.NumberElements/3=%
+FormatData/in/latn.NumberElements/4=0
+FormatData/in/latn.NumberElements/5=#
+FormatData/in/latn.NumberElements/6=-
+FormatData/in/latn.NumberElements/7=E
+FormatData/in/latn.NumberElements/8=\u2030
+FormatData/in/latn.NumberElements/9=\u221e
+FormatData/in/latn.NumberElements/10=NaN
 FormatData/in/TimePatterns/0=HH.mm.ss zzzz
 FormatData/in/TimePatterns/1=HH.mm.ss z
 FormatData/in/TimePatterns/2=HH.mm.ss
@@ -2859,9 +2859,9 @@
 FormatData/in_ID/DateTimePatterns/0={1} {0}
 #CurrencyNames/in_ID/IDR/0=<MISSING!>
 #en_MT
-FormatData/en_MT/NumberPatterns/0=#,##0.###
-FormatData/en_MT/NumberPatterns/1=\u00a4#,##0.00
-FormatData/en_MT/NumberPatterns/2=#,##0%
+FormatData/en_MT/latn.NumberPatterns/0=#,##0.###
+FormatData/en_MT/latn.NumberPatterns/1=\u00a4#,##0.00
+FormatData/en_MT/latn.NumberPatterns/2=#,##0%
 FormatData/en_MT/TimePatterns/0=HH:mm:ss zzzz
 FormatData/en_MT/TimePatterns/1=HH:mm:ss z
 FormatData/en_MT/TimePatterns/2=HH:mm:ss
@@ -2895,15 +2895,15 @@
 LocaleNames/en_MT/VC=St. Vincent & Grenadines
 LocaleNames/en_MT/WF=Wallis & Futuna
 #mt_MT
-FormatData/mt_MT/NumberPatterns/0=#,##0.###
-FormatData/mt_MT/NumberPatterns/1=\u00a4#,##0.00
-FormatData/mt_MT/NumberPatterns/2=#,##0%
+FormatData/mt_MT/latn.NumberPatterns/0=#,##0.###
+FormatData/mt_MT/latn.NumberPatterns/1=\u00a4#,##0.00
+FormatData/mt_MT/latn.NumberPatterns/2=#,##0%
 #CurrencyNames/mt_MT/MTL=<MISSING!>
 CurrencyNames/mt_MT/EUR=\u20ac
 #en_PH
-FormatData/en_PH/NumberPatterns/0=#,##0.###
-FormatData/en_PH/NumberPatterns/1=\u00a4#,##0.00
-FormatData/en_PH/NumberPatterns/2=#,##0%
+FormatData/en_PH/latn.NumberPatterns/0=#,##0.###
+FormatData/en_PH/latn.NumberPatterns/1=\u00a4#,##0.00
+FormatData/en_PH/latn.NumberPatterns/2=#,##0%
 FormatData/en_PH/TimePatterns/0=h:mm:ss a zzzz
 FormatData/en_PH/TimePatterns/1=h:mm:ss a z
 FormatData/en_PH/TimePatterns/2=h:mm:ss a
@@ -2972,17 +2972,17 @@
 FormatData/el/DayAbbreviations/6=\u03a3\u03ac\u03b2
 FormatData/el/AmPmMarkers/0=\u03c0.\u03bc.
 FormatData/el/AmPmMarkers/1=\u03bc.\u03bc.
-#FormatData/el/NumberElements/0=<MISSING!>
-#FormatData/el/NumberElements/1=<MISSING!>
-#FormatData/el/NumberElements/2=<MISSING!>
-#FormatData/el/NumberElements/3=<MISSING!>
-#FormatData/el/NumberElements/4=<MISSING!>
-#FormatData/el/NumberElements/5=<MISSING!>
-#FormatData/el/NumberElements/6=<MISSING!>
-#FormatData/el/NumberElements/7=<MISSING!>
-#FormatData/el/NumberElements/8=<MISSING!>
-#FormatData/el/NumberElements/9=<MISSING!>
-#FormatData/el/NumberElements/10=<MISSING!>
+FormatData/el/latn.NumberElements/0=,
+FormatData/el/latn.NumberElements/1=.
+FormatData/el/latn.NumberElements/2=;
+FormatData/el/latn.NumberElements/3=%
+FormatData/el/latn.NumberElements/4=0
+FormatData/el/latn.NumberElements/5=#
+FormatData/el/latn.NumberElements/6=-
+FormatData/el/latn.NumberElements/7=e
+FormatData/el/latn.NumberElements/8=\u2030
+FormatData/el/latn.NumberElements/9=\u221e
+FormatData/el/latn.NumberElements/10=NaN
 FormatData/el/TimePatterns/0=h:mm:ss a zzzz
 FormatData/el/TimePatterns/1=h:mm:ss a z
 FormatData/el/TimePatterns/2=h:mm:ss a
@@ -3012,9 +3012,9 @@
 FormatData/el_CY/AmPmMarkers/1=\u03bc.\u03bc.
 FormatData/el_CY/Eras/0=\u03c0.\u03a7.
 FormatData/el_CY/Eras/1=\u03bc.\u03a7.
-FormatData/el_CY/NumberPatterns/0=#,##0.###
-FormatData/el_CY/NumberPatterns/1=#,##0.00\u00a0\u00a4
-FormatData/el_CY/NumberPatterns/2=#,##0%
+FormatData/el_CY/latn.NumberPatterns/0=#,##0.###
+FormatData/el_CY/latn.NumberPatterns/1=#,##0.00\u00a0\u00a4
+FormatData/el_CY/latn.NumberPatterns/2=#,##0%
 FormatData/el_CY/TimePatterns/0=h:mm:ss a zzzz
 FormatData/el_CY/TimePatterns/1=h:mm:ss a z
 FormatData/el_CY/TimePatterns/2=h:mm:ss a
@@ -3327,9 +3327,9 @@
 CalendarData/el_CY/minimalDaysInFirstWeek=1: 001 GU UM US VI;4: AD AN AT AX BE BG CH CZ DE DK EE ES FI FJ FO FR GB GF GG GI GP GR HU IE IM IS IT JE LI LT LU MC MQ NL NO PL PT RE RU SE SJ SK SM VA
 
 #ms_MY and ms
-FormatData/ms_MY/NumberPatterns/0=#,##0.###
-FormatData/ms_MY/NumberPatterns/1=\u00a4#,##0.00
-FormatData/ms_MY/NumberPatterns/2=#,##0%
+FormatData/ms_MY/latn.NumberPatterns/0=#,##0.###
+FormatData/ms_MY/latn.NumberPatterns/1=\u00a4#,##0.00
+FormatData/ms_MY/latn.NumberPatterns/2=#,##0%
 FormatData/ms_MY/TimePatterns/0=h:mm:ss a zzzz
 FormatData/ms_MY/TimePatterns/1=h:mm:ss a z
 FormatData/ms_MY/TimePatterns/2=h:mm:ss a
@@ -3413,9 +3413,9 @@
 # es_US
 FormatData/es_US/Eras/0=a. C.
 FormatData/es_US/Eras/1=d. C.
-FormatData/es_US/NumberPatterns/0=#,##0.###
-FormatData/es_US/NumberPatterns/1=\u00a4#,##0.00
-FormatData/es_US/NumberPatterns/2=#,##0\u00a0%
+FormatData/es_US/latn.NumberPatterns/0=#,##0.###
+FormatData/es_US/latn.NumberPatterns/1=\u00a4#,##0.00
+FormatData/es_US/latn.NumberPatterns/2=#,##0\u00a0%
 FormatData/es_US/TimePatterns/0=h:mm:ss a zzzz
 FormatData/es_US/TimePatterns/1=h:mm:ss a z
 FormatData/es_US/TimePatterns/2=h:mm:ss a
@@ -4338,20 +4338,20 @@
 FormatData/sr/DayAbbreviations/6=\u0441\u0443\u0431
 FormatData/sr/Eras/0=\u043f. \u043d. \u0435.
 FormatData/sr/Eras/1=\u043d. \u0435.
-FormatData/sr/NumberPatterns/0=#,##0.###
-FormatData/sr/NumberPatterns/1=#,##0.00\u00a0\u00a4
-FormatData/sr/NumberPatterns/2=#,##0%
-#FormatData/sr/NumberElements/0=<MISSING!>
-#FormatData/sr/NumberElements/1=<MISSING!>
-#FormatData/sr/NumberElements/2=<MISSING!>
-#FormatData/sr/NumberElements/3=<MISSING!>
-#FormatData/sr/NumberElements/4=<MISSING!>
-#FormatData/sr/NumberElements/5=<MISSING!>
-#FormatData/sr/NumberElements/6=<MISSING!>
-#FormatData/sr/NumberElements/7=<MISSING!>
-#FormatData/sr/NumberElements/8=<MISSING!>
-#FormatData/sr/NumberElements/9=<MISSING!>
-#FormatData/sr/NumberElements/10=<MISSING!>
+FormatData/sr/latn.NumberPatterns/0=#,##0.###
+FormatData/sr/latn.NumberPatterns/1=#,##0.00\u00a0\u00a4
+FormatData/sr/latn.NumberPatterns/2=#,##0%
+FormatData/sr/latn.NumberElements/0=,
+FormatData/sr/latn.NumberElements/1=.
+FormatData/sr/latn.NumberElements/2=;
+FormatData/sr/latn.NumberElements/3=%
+FormatData/sr/latn.NumberElements/4=0
+FormatData/sr/latn.NumberElements/5=#
+FormatData/sr/latn.NumberElements/6=-
+FormatData/sr/latn.NumberElements/7=E
+FormatData/sr/latn.NumberElements/8=\u2030
+FormatData/sr/latn.NumberElements/9=\u221e
+FormatData/sr/latn.NumberElements/10=NaN
 FormatData/sr/TimePatterns/0=HH:mm:ss zzzz
 FormatData/sr/TimePatterns/1=HH:mm:ss z
 FormatData/sr/TimePatterns/2=HH:mm:ss
@@ -5374,17 +5374,17 @@
 LocaleNames/zh_SG/TF=\u6cd5\u5c5e\u5357\u90e8\u9886\u5730
 FormatData/es_US/AmPmMarkers/0=a.\u00a0m.
 FormatData/es_US/AmPmMarkers/1=p.\u00a0m.
-#FormatData/es_US/NumberElements/0=<MISSING!>
-#FormatData/es_US/NumberElements/1=<MISSING!>
-#FormatData/es_US/NumberElements/2=<MISSING!>
-#FormatData/es_US/NumberElements/3=<MISSING!>
-#FormatData/es_US/NumberElements/4=<MISSING!>
-#FormatData/es_US/NumberElements/5=<MISSING!>
-#FormatData/es_US/NumberElements/6=<MISSING!>
-#FormatData/es_US/NumberElements/7=<MISSING!>
-#FormatData/es_US/NumberElements/8=<MISSING!>
-#FormatData/es_US/NumberElements/9=<MISSING!>
-#FormatData/es_US/NumberElements/10=<MISSING!>
+FormatData/es_US/latn.NumberElements/0=.
+FormatData/es_US/latn.NumberElements/1=,
+FormatData/es_US/latn.NumberElements/2=;
+FormatData/es_US/latn.NumberElements/3=%
+FormatData/es_US/latn.NumberElements/4=0
+FormatData/es_US/latn.NumberElements/5=#
+FormatData/es_US/latn.NumberElements/6=-
+FormatData/es_US/latn.NumberElements/7=E
+FormatData/es_US/latn.NumberElements/8=\u2030
+FormatData/es_US/latn.NumberElements/9=\u221e
+FormatData/es_US/latn.NumberElements/10=NaN
 FormatData/mt/AmPmMarkers/0=AM
 FormatData/mt/AmPmMarkers/1=PM
 FormatData/mt/DatePatterns/0=EEEE, d 'ta'\u2019 MMMM y
@@ -5495,16 +5495,16 @@
 FormatData/fr_LU/DateTimePatternChars=GyMdkHmsSEDFwWahKzZ
 
 # bug 6547501
-FormatData/fr/NumberPatterns/2=#,##0\u00a0%
+FormatData/fr/latn.NumberPatterns/2=#,##0\u00a0%
 # following two lines are also for bug 4494727
-FormatData/fr_CA/NumberPatterns/2=#,##0\u00a0%
-FormatData/fr_CH/NumberPatterns/2=#,##0%
+FormatData/fr_CA/latn.NumberPatterns/2=#,##0\u00a0%
+FormatData/fr_CH/latn.NumberPatterns/2=#,##0%
 
 # bug 4494727
-FormatData/de_CH/NumberPatterns/2=#,##0%
-FormatData/tr/NumberPatterns/2=%#,##0
+FormatData/de_CH/latn.NumberPatterns/2=#,##0%
+FormatData/tr/latn.NumberPatterns/2=%#,##0
 # added to verify propper inheritance
-FormatData/tr_TR/NumberPatterns/2=%#,##0
+FormatData/tr_TR/latn.NumberPatterns/2=%#,##0
 
 # bug 6533691
 LocaleNames/de/ME=Montenegro
@@ -5531,7 +5531,7 @@
 CurrencyNames/ar_SD/SDG=\u062c.\u0633.
 
 # bug 6531593
-FormatData/is_IS/NumberPatterns/1=#,##0.00\u00a0\u00a4
+FormatData/is_IS/latn.NumberPatterns/1=#,##0.00\u00a0\u00a4
 
 # bug 6509039
 FormatData/sv/AmPmMarkers/0=fm
@@ -5588,10 +5588,10 @@
 FormatData/be_BY/MonthAbbreviations/10=\u043b\u0456\u0441
 
 # bug 6645405
-FormatData/hu_HU/NumberPatterns/1=#,##0.00\u00a0\u00a4
+FormatData/hu_HU/latn.NumberPatterns/1=#,##0.00\u00a0\u00a4
 
 # bug 6650730
-#FormatData/lt/NumberElements/1=<MISSING!>
+FormatData/lt/latn.NumberElements/1=\u00a0
 FormatData/lt/DatePatterns/2=y-MM-dd
 
 #bug 6910489
@@ -7673,7 +7673,7 @@
 LocaleNames/sv/ZA=Sydafrika
 
 # bug 8027695
-FormatData/sv_SE/NumberPatterns/2=#,##0\u00a0%
+FormatData/sv_SE/latn.NumberPatterns/2=#,##0\u00a0%
 
 # bug 8017142
 FormatData/es_CL/TimePatterns/0=HH:mm:ss zzzz
--- a/test/jdk/sun/text/resources/LocaleDataTest.java	Mon Sep 09 12:00:36 2019 -0700
+++ b/test/jdk/sun/text/resources/LocaleDataTest.java	Mon Sep 09 12:42:01 2019 -0700
@@ -39,7 +39,7 @@
  *      8017142 8037343 8055222 8042126 8074791 8075173 8080774 8129361 8134916
  *      8145136 8145952 8164784 8037111 8081643 7037368 8178872 8185841 8190918
  *      8187946 8195478 8181157 8179071 8193552 8202026 8204269 8202537 8208746
- *      8209775 8221432 8227127
+ *      8209775 8221432 8227127 8230284
  * @summary Verify locale data
  * @modules java.base/sun.util.resources
  * @modules jdk.localedata